1. 程式人生 > >悼念512汶川大地震遇難同胞——珍惜現在,感恩生活(復習多重背包)

悼念512汶川大地震遇難同胞——珍惜現在,感恩生活(復習多重背包)

ems name clas ostream pre names 特點 生活 iostream

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

傳送門

【題目大意】

在資金一定的情況下,給出救難用的每袋大米的重量,價格,袋數。求購買大米的最終重量。

【思路】多重背包。

【復習】多重背包特點。

題目
N種物品和一個容量為V的背包。第i種物品最多有n[i]件可用,每件費用是c[i],價值是w[i]。求解將哪些物品裝入背包可使這些物品的費用總和不超過背包容量,且價值總和最大。

【code】

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int t,mon,k,w[102
],pri[102],f[102],cnt[102]; int main() { scanf("%d",&t); while(t--) { memset(f,0,sizeof(f)); scanf("%d%d",&mon,&k); for(int i=1;i<=k;i++) scanf("%d%d%d",&pri[i],&w[i],&cnt[i]); for(int i=1;i<=k;i++) { for
(int j=mon;j>=pri[i];j--) { for(int h=0;h<=cnt[i];h++) { if(j-h*pri[i]<0)break; f[j]=max(f[j],f[j-h*pri[i]]+h*w[i]); } } } printf("%d\n",f[mon]); } return 0; }

悼念512汶川大地震遇難同胞——珍惜現在,感恩生活(復習多重背包)