首页 > 代码库 > hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
转载请注明出处:http://blog.csdn.net/u012860063
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191
多重背包转换为01背包问题:
代码如下:
#include <cstdio> #include <cstring> #define N 247 int max(int a,int b) { if(a > b) return a; else return b; } int main() { int t,n,m,i,j,k; int w[N],pri[N],num[N],f[N]; while(~scanf("%d",&t)) { while(t--) { memset(f,0,sizeof(f)); scanf("%d%d",&n,&m);//n为总金额,m为大米种类 for(i = 0 ; i < m ; i++) { scanf("%d%d%d",&pri[i],&w[i],&num[i]);//num[i]为每种大米的袋数 } for(i = 0 ; i < m ; i++) { for(k = 0 ; k < num[i] ; k++) { for(j = n ; j >= pri[i]; j--) { f[j] = max(f[j],f[j-pri[i]]+w[i]); } } } printf("%d\n",f[n]); } } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。