#include "stdio.h"
#include "math.h"
int main()
{
int i,j,n,m;
int temp,max,flag;
int a[1000],b[1000],in[1000];
int r[1000]={0},v[1000]={0};
printf("请输入需要放入的物品数:\n");
scanf("%d",&n);
printf("请输入背包的容量:\n");
scanf("%d",&m);
printf("请输入放入的每个物品的质量:\n");
for(i=0;i<n;i++)
scanf ("%d",&a[i]);
printf("请输入放入的每个物品的价值:\n");
for(i=0;i<n;i++)
scanf ("%d",&b[i]);
for (i=0;i<pow(2,n);i++)
{
temp=i;
for(j=0;j<n;j++)
{
in[j]=temp%2;
temp=temp/2;
}
for(j=0;j<n;j++)
{
if(in[j]==1)
{
r[i]=r[i]+a[j];
v[i]=v[i]+b[j];
}
}
}
max=0;
for(i=1000;i>=0;i--)
{
if(v[i]!=0 && v[i]>max && r[i]<=m)
{
max=v[i];
flag=i;
}
}
printf("%d\n",max);
while(flag>0)
{
printf("%d",flag%2);
flag=flag/2;
}
return 0;
}
0-1背包问题
最新推荐文章于 2024-12-08 23:18:02 发布