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