zoukankan      html  css  js  c++  java
  • 贪心法求解背包问题

    #include<stdio.h>
    
    struct A{
        double w;
        double v;
        double xingjiabi;
    }a[100],p;
    
    void QuickSort(A a[],int numsize)
    {
        int i=0,j=numsize-1;
        A p=a[0];
        if(numsize>1)
        {
            while(i<j)
            {
                for(;j>i;j--)
                    if(a[j].xingjiabi<p.xingjiabi)
                    {
                        a[i]=a[j];
                        break;
                    }
                for(;i<j;i++)
                    if(a[i].xingjiabi>p.xingjiabi)
                    {
                        a[j]=a[i];
                        break;
                    }
            }
            a[i]=p;
            QuickSort(a,i);
            QuickSort(a+i+1,numsize-1-i);
        }
    }
    
    int main()
    {
        int n,i,wi,vi,C,Value;
        scanf("%d",&n);//物品个数 
        for(i=0;i<n;i++)
        {
            scanf("%lf%lf",&a[i].w,&a[i].v);//重量 价值 
            a[i].xingjiabi = a[i].v/a[i].w;
        }
        QuickSort(a,n);
        scanf("%d",&C);//背包容量 
        Value=0;
        for(i=n-1;i>=0;i--)
        {
            if(a[i].w<=C)
            {
                Value+=a[i].v;
                C-=a[i].w;
            }
        } 
        printf("%d
    ",Value); 
        return 0;
    }
  • 相关阅读:
    [AX]AX2012开发新特性outer join中使用QueryFilter
    [AX]AX2012开发新特性表继承
    docker环境安装
    poj 3469
    poj 1187
    poj 1159
    poj 2135
    poj 1273
    poj 1458
    poj 1141
  • 原文地址:https://www.cnblogs.com/suthui/p/3809695.html
Copyright © 2011-2022 走看看