#include
int x[1000]; //数组用来存放每个物品的状态是0 还是1
int val[1000] = {-1};//存放每个物品的价值
int weight[1000] = {-1};//存放每个物品的重量
int IsOverLoad(int n, int c)//判断物品是否超重
{
int i, w = 0;
for(i=0; i
{
w = w + x[i] * weight[i];
}
if(w > c)
return 1;//超重
else
return 0;
}
int GetVal(int n)//返回所有物品的价值和
{
int i, v = 0;
for(i=0; i
{
v = v + x[i] * val[i];
}
return v;
}
void Knap_1(int n, int flag, int c, int *price)//找到物品的装包的最高的价值量
{
int i, p;
if(IsOverLoad(n, c) == 1)//超过背包的装载上限c,剪枝
return;
if(n == flag)//搜索完一条可能的解的路径
{
p = GetVal(n);//获得这种装包的方案的总价值量
if(*price < p)<