试题详情
简答题用贪心算法设计0-1背包问题。要求:说明所使用的算法策略;写出算法实现的主要步骤;分析算法的时间。
  • 首先计算每种物品单位重量的价值Vi/Wi,然后,依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包。若将这种物品全部装入背包后,背包内的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包。依此策略一直地进行下去,直到背包装满为止。
    具体算法可描述如下:
    void Knapsack(int n,float M,float v[],float w[],float x[])
    {Sort(n,v,w);
    int i;
    for(i=1;i<=n;i++) x[i]=0;
    float c=M;
    for(i=1;i<=n;i++)
    {if(w[i]>c) break;
    x[i]=1;
    c-=w[i];
    }
    if(i<=n)x[i]=c/w[i];
    }
  • 关注下方微信公众号,在线模考后查看

热门试题