01揹包(模板)
阿新 • • 發佈:2018-12-05
1 /* 2 * 01揹包 3 * n種物品,沒種的重量為W,價值為V,揹包容量為C,求在不超過C的情況下能裝入的最大價值; 4 * 測試資料: 5 * 5 10 6 * 2 6 7 * 2 3 8 * 6 5 9 * 5 4 10 * 4 6 11 * 12 * Answer: 15 13 */ 14 #include<iostream> 15 #include<cstdio> 16 #include<cstring> 17 #include<algorithm> 18 using namespace std;19 20 int n,C; 21 struct node 22 { 23 int W,V; 24 }maze[10]; 25 int dp[20]; 26 27 int main() 28 { 29 while(scanf("%d%d",&n,&C)!=EOF) 30 { 31 for(int i=0;i<n;i++) 32 { 33 scanf("%d%d",&maze[i].W,&maze[i].V); 34 } 35 memset(dp,0,sizeof(dp)); 36 for(int i=0;i<n;i++) 37 { 38 for(int j=C;j>=maze[i].W;j--) 39 dp[j] = max(dp[j-maze[i].W]+maze[i].V,dp[j]); 40 } 41 printf("%d",dp[C]); 42 } 43 return 0; 44 }