题目地址http://acm.hdu.edu.cn/showproblem.php?pid=2602
#include <stdio.h> #include <string.h> int main() { int cost[1010],f[1010],va[1010]; int i,j,k,n,m; scanf("%d",&k); while(k--) { memset(f,0,sizeof(f)); scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%d",&va[i]); for(i=0;i<n;i++) scanf("%d",&cost[i]); for(i=0;i<n;i++) { for(j=m;j>=cost[i];j--) { //经典部分 f[j]=f[j]>f[j-cost[i]]+va[i]?f[j]:f[j-cost[i]]+va[i];//放于不放比较 } } printf("%d ",f[m]); } return 0; }
动态规划之0-1背包经典题加上这个图以便理解