该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
c-=w[i];
}
}
if(m[n][c] >0)
flag[n] = 1;
else
flag[n] = 0;
}
/* 打印最优解*/
void printResult(int flag[NUM],int w[NUM],int v[NUM],int m[NUM][content])
{
int i;
printf("the knapsack should contain:\n");
printf(" num weight value \n");
for(i = 0;i < NUM; i++)
{
if(flag[i] == 1)
printf(" %d %d %d\n",i,w[i],v[i]);
}
printf("the max value in the knapsack is: %d\n",m[0][content]);
printf("the real weight of the knapsack is: %d\n",m[0][content]);
}
int main()
{ int i;
int value[NUM];
int weight[NUM];
int c = content;
int maxvalue[NUM][content];
int flag[NUM]={0,0,0,0,0,0,0,0,0,0};
system("cls");
printf("****************************************\n");
printf("* welcome *\n");
printf("* this program will solve *\n");
printf("* the problem of knapsack *\n");
printf("****************************************\n");
printf("please input the value of every one:\n");
for(i = 0;i < NUM; i++)
scanf("%d",&value[i]);
printf("please input the weight of every one:\n");
for(i = 0;i < NUM; i++)
scanf("%d",&weight[i]);
/*计算最优值*/
knapsack(value,weight,c,maxvalue);
/*构造最优解*/
traceback(flag,weight,maxvalue);
/*打印程序的结果*/
printResult(flag,weight,value,maxvalue);
getch();
return 0;
}