#include <stdio.h>
#include <stdlib.h>
#define N 10
#define C 10
int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int KnapSack(int n,int c,int v[n],int w[n],int m[N][C])
{
int i,j;
for(i=1;i<=n;i++)
m[i][0];
for(i=1;i<=n;i++){
for(j=1;j<=C;j++){
if(j<w[i]){
m[i][j]=m[i-1][j];
}else{
m[i][j]=max(m[i-1][j],m[i-1][j-w[i]]+v[i]);
}
}
}
}
int main()
{
int i,j,n,c;
int w[N]={0}, v[N]={0}, x[N]={0}, m[N][C]={0};
printf("请输入背包最大容量:");
scanf("%d",&c);
printf("请输入物品数量:");
scanf("%d",&n);
printf("请输入物品重量:");
for(i=1;i<=n;i++){
scanf("%d",&w[i]);
}
printf("请输入物品价值:");
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
KnapSack(n,c,v,w,m);
printf("m[][]的结果为:\n");
for(i=1;i<=n;i++){
for(j=1;j<=c;j++){
printf("%d\t",m[i][j]);
}
printf("\n");
}
printf("最优值:%d\n",m[n][c]);
return 0;
}