//偶尔会运行出错,需要多运行几次
#include<stdio.h>
int Zuida(int n1,int n2)
{
if(n1>n2)
{
return n1;
}
return n2;
}
int main(){
int W=5,B=10;//5个物品,背包容量为10
int v[]={6,5,4,2,1};//物品价值
int w[]={5,3,5,3,2};//物品重量
int m[W+1][B+1];
for(int i=0;i<=W;i++){
for(int j=0;j<=B;j++)
{
m[i][j]=0;
}
}
for(int i=1;i<=W;i++)
{
for(int j=1;j<=B;j++)
{
if(j>=w[i])
{
m[i][j]=Zuida(m[i-1][j],m[i-1][j-w[i]]+v[i]);
}
else{
m[i][j]=m[i-1][j];
}
}
}
printf("背包物品价值最大为:%d\n",m[W][B]);
return 0;
}