-
问题描述
一个简化的背包问题:一个背包能装为 总重量为 T ,现有 n 个物件,其重量分别为(W 1 、 、W 2 、 、… 、W n )。问能否从这 n 个物件中挑选若干个物件放入背包为 中,使其总重量正好为 T ?若有解则给出全部解,否则输出无解。
-
代码实现
#include<stdio.h>
int x=0,y=0;
void knapsack(int weight,int a[],int number,int solution[]);
int main(void)
{
int weight,number,i;
int thing[30]={0},solution[30]={0};
printf("请输入背包装载量和物品个数:\n");
scanf("%d %d",&weight,&number);
printf("请输入各物品的重量:\n");
for(i=0;i < number;++i)
scanf("%d",&thing[i]);
i=0;
knapsack(weight,thing,i,solution);
if(!x) printf("无解!!!");
return 0;
}
void knapsack(int weight,int thing[],int i,int solution[])
{
int j=i;
if(weight==0)
{
printf(&#