#include<stdio.h>
#define MAXN 20
int n=4;
int W=6;
int w[]={0,5,3,2,1};
int v[]={0,4,4,3,1};
int x[MAXN];
int maxv;
void dfs(int i,int tw,int tv,int op[])
{
if(i>n)
{
if(tw==W&&tv>maxv)
{
maxv=tv;
for(int j=1;j<=n;j++)
x[j]=op[j];
}
}
else
{
op[i]=1;
dfs(i+1,tw+w[i],tv+v[i],op);
op[i]=0;
dfs(i+1,tw,tv,op);
}
}
void dispsolution()
{
int i;
printf("最优解:\n");
for(i=1;i<=n;i++)
if(x[i]==1)
printf(" 选取第%d个物品\n",i);
printf("总重量=%d,总价值=%d\n",W,maxv);
}
int main(){
int op[MAXN];
dfs(1,0,0,op);
dispsolution();
return 0;
}