int max(int a,int b)
{
return a>b?a:b;
}
/*
0 1 背包
*/
int MaxValue()
{
int Weight[5]={2,2,6,5,4};//物品的重量数组
int Value[5]={6,3,5,4,6};//物品价值数组
int Total_Count = 5/*物品个数*/,
Total_w = 10 /*背包承重*/;
int f[5][10]={0};
for(int Cur_w =1;Cur_w <= Total_w;Cur_w++)//背包重量
{
for(int i=0;i<Total_Count;i++)//物品个数
{
{
//这里需要考虑Cur_w是否大于Weight
if(Cur_w >= Weight[i])
{
if(i==0)//第一件物品
{
f[i][Cur_w-1] = Value[i];
}
else
{
f[i][Cur_w-1] = max(f[i-1][Cur_w-1-Weight[i]]+Value[i],f[i-1][Cur_w-1]);
}
}
else//当前背包承重小于i物品的重量时
{
//同样考虑第一件物品的情况
if(i==0)
{
f[i][Cur_w-1] = 0;
}
else
{
f[i][Cur_w-1] = f[i-1][Cur_w-1];
}
}
}
}
}
return f[4][9];