HDU2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

来源:互联网 发布:淘宝怎么去掉虚拟商品 编辑:程序博客网 时间:2024/07/15 00:20

原题链接

将此题转化成0-1问题,只需要加一层循环

#include<iostream>#include<cstring>using namespace std;int C,n,m,p[105],h[105],c[105];int dp[200];int main(){    cin>>C;    while(C--)    {        memset(dp, 0, sizeof(dp));        cin>>n>>m;//给定总钱数,每种物品数量,要求获得的最大重量        for (int i=0;i<m;i++)            cin>>p[i]>>h[i]>>c[i];//价值,重量,数量,        for (int i=0;i<m;i++)//种类            for (int j=0;j<c[i];j++)//数量,此层循环体现了与0-1问题的不同                for (int k=n;k>=p[i];k--)//价值                    dp[k]=max(dp[k],dp[k-p[i]]+h[i]);        cout<<dp[n]<<endl;    }    return 0;}
阅读全文
0 0
原创粉丝点击