#include<stdio.h>
#define Max_n 20
int n=5;
int W=10;
int w[]={0,4,2,1,5,6};
int v[]={0,5,3,2,3,5};
int x[Max_n];
int maxv;
void HuisuBag(int i,int xw,int xv,int Sv[])
{
if(i>n)
{
if(xw==W&&xv>maxv)
{
maxv=xv;
for(int j=0;j<=n;j++)
x[j]=Sv[j];
}
}
else
{
Sv[i]=1;
HuisuBag(i+1,xw+w[i],xv+v[i],Sv);
Sv[i]=0;
HuisuBag(i+1,xw,xv,Sv);
}
}
void Zuiyou()
{
printf("最大价值=%d,选择物品总重量=%d\n",W,maxv);
printf("最优解(头个元素‘0’除外):\n");
int i;
for(i=1;i<=n;i++)
if(x[i]==1)
printf(" 选取第%d个物品\n",i);
}
int main(){
int Sv[Max_n];
HuisuBag(1,0,0,Sv);
Zuiyou();
return 0;
}