作为一个oier,以及大学acm党背包是必不可少的一部分。好久没做背包类动规了。久违地练习下-。-
dd__engi的背包九讲:http://love-oriented.com/pack/
鸣谢http://blog.csdn.net/eagle_or_snail/article/details/50987044,这里有大部分比较有趣的dp练手题。
hud 2602 01背包板子题
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #define clr(x) memset(x,0,sizeof(x)) 5 using namespace std; 6 struct node 7 { 8 int cost,val; 9 }bag[1010]; 10 int dp[1010]; 11 int main() 12 { 13 int T,n,m; 14 scanf("%d",&T); 15 while(T--) 16 { 17 scanf("%d%d",&n,&m); 18 clr(dp); 19 clr(bag); 20 for(int i=1;i<=n;i++) 21 scanf("%d",&bag[i].val); 22 for(int i=1;i<=n;i++) 23 scanf("%d",&bag[i].cost); 24 for(int i=1;i<=n;i++) 25 for(int j=m;j>=bag[i].cost;j--) 26 { 27 if(dp[j]<dp[j-bag[i].cost]+bag[i].val) 28 dp[j]=dp[j-bag[i].cost]+bag[i].val; 29 } 30 printf("%d\n",dp[m]); 31 } 32 return 0; 33 }