#include<stdio.h>
#define MAX 50
int weight[]={6,5,4,2,1};
int value[]={5,3,5,3,2};
int n=4;
int bagweight=10;
int x[MAX];
int maxv;
void solution(int i,int tweight,int tvalue,int a[])
{
if(i>n)
{
if(tweight==bagweight&&tvalue>maxv)
{
maxv=tvalue;
for(int j=1;j<=n;j++)
x[j]=a[j];
}
}
else
{
a[i]=1;
solution(i+1,tweight+weight[i],tvalue+value[i],a);
a[i]=0;
solution(i+1,tweight,tvalue,a);
}
}
void dispsolution()
{
int i;
printf("最优解为: \n");
for(i=1;i<=n;i++)
if(x[i]==1)
printf("选取的物品为第%d个\n",i+1);
printf("总重量=%d\n",bagweight);
printf("总价值=%d\n",maxv);
}
int main(){
int a[MAX];
solution(1,0,0,a);
dispsolution();
return 0;
}