64,637
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
int bestw=0; //当前最多载重量
int cw=0; // 当前载重量
int num=3; // 箱子数
int r=46; // 剩余箱子重量
int bestx[3]; //最重的情况下箱子的选择情况
void load(int *w,int c,int n,int *x)
{
if(n>=num)
{
if(cw>bestw)
{
for(int i=0;i<n;i++)
{ bestx[i]=x[i];
bestw=cw;
}
}
return ;
}
r-=w[n];
if(cw+w[n]<=c)
{
cw+=w[n];
x[n]=1;
load(w,c,n+1,x);
cw=cw-w[n];
}
if(cw+r>bestw)
{
x[n]=0;
load(w,c,n+1,x);
}
r+=w[n];
}
int main(void)
{int w[]={ 16,15,15};
int x[3]={0};
load(w,30,0,x);
cout<<bestw;
for(int i=0;i<num;i++)
cout<<bestx[i];
return 0;
}