F[i; v]<--max{F[i - 1, v], F[i - 1, v - Ci] +Wi}
代码如下:
# include <stdio.h> # include <stdlib.h> # include <string.h> # define max(x,y) x>y?x:y; int v[1001];//价值 int w[1001];//重量 int dp[1001][1001]; int main() { int n,m,i,j; while(scanf("%d%d",&m,&n)!=EOF) { memset(dp,0,sizeof(dp));//初始化 for(i=1; i<=n; i++) scanf("%d%d",&w[i],&v[i]); for(i=1; i<=n; i++) // 物品数 for(j=m; j>=w[i]; j--) //放入背包 dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);// 与前面对比 printf("%d\n",dp[n][m]); } return 0; }
原文地址:http://blog.csdn.net/jiangx1994/article/details/38037143