编辑代码

#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;
}