编辑代码

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