问题描述: 给定一个容积为c的背包,去尝试装n个重量为wi、价值为vi的物体,求能装下的物体的最大价值。
#include<stdio.h>
#include<math.h>
#define n 5
int main()
{
int c=15;
int w[n]={12,1,4,1,2},v[n]={4,2,10,1,2};
int num,temp;
int weight;
int maxvalue=0;
int value;
int tmp;
for(num=0;num<pow(2,n);num++)
{
weight=0;
value=0;
temp=num;
for(int i=0;i<n;i++)
{
if(temp%2)
{
weight+=w[i];
value+=v[i];
}
temp/=2;
}
if(weight<=c && value>=maxvalue)
{
maxvalue=value; //找出最大值
tmp=num;
}
}
printf("%d\n",maxvalue);
for(int i=0;i<n;i++)
{
if(tmp%2)
printf("%d ",v[i]);
tmp/=2;
}
return 0;
}