#include
#define MAXSIZE 10000
int n,maxw;
int b[MAXSIZE],w[MAXSIZE];
int value[MAXSIZE];
void Knapsack(int maxw)
{
int i,k;
for(i=0;i=w[k];i--)//这个for循环是要干嘛的
{
if(value[i-w[k]]+b[k]>value)
value=value[i-w[k]]+b[k];
}
}
printf("%d",value[maxw]);
}
int main()
{
int i;
printf("输入物品的总数n=");
scanf("%d",&n);
printf("输入正的最大总权值maxw=");
scanf("%d",&maxw);
for(i=1;i<=n;i++)
{
printf("输入物品%d的正效用b和权值w",i);
scanf("%d%d",&b,&w);
}
Knapsack(maxw);
return 0;
}
这个是用动态规划写的,大虾们帮忙看下,谢谢
大虾们,帮忙解释下啊 ,刚赚 到分好的话再 追加!!!
|