NYOJ-106 揹包問題(貪心)

南陽OJ上的一個揹包問題,注意是單位價值,因爲物品可分割,用貪心法即可解決。題目地址http://acm.nyist.net/JudgeOnline/problem.php?pid=106

#include <iostream>
#include <algorithm>
using namespace std;
struct wup{
    int v;   //單位價值
    int w;   //重量
}wp[11];

bool cmp(wup a,wup b)
{
    return a.v>b.v;
}

int main()
{
    int n;
    cin>>n;
    int s,m,sum;
    while(n--)
    {
        sum=0;
        cin>>s>>m;
        int i;
        for(i=0;i<s;i++)
        {
            cin>>wp[i].v>>wp[i].w;
        }
        sort(wp,wp+s,cmp);     //將單位價值高的排在前面
        i=0;
        while(m>0)
        {
            if(m>=wp[i].w) {sum+=wp[i].v*wp[i].w; m-=wp[i].w;}
            else { sum+=m*wp[i].v; m-=m;}
            i++;
        }
        cout<<sum<<endl;
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章