题目:
一个农场养了一群蛋鸡,每只鸡的重量不同,每只鸡的月产蛋量也不同,先有一辆车,车的载重量为C,要拉走一群鸡,在车能装下的前提下,保证车内鸡的总月产蛋量最大。
输入:鸡的数量n,每只鸡的重量wi,每只鸡的月产蛋量vi,车的载重量C
输出:选择哪些鸡装入车中。
代码:
#include <bits/stdc++.h>
using namespace std;
const int MAXN=1010;
int n,c,bestv,cw,cv,w[MAXN],v[MAXN];
void dfs(int i)
{
if(i>=n)
{
bestv=max(bestv,cv);
return;
}
if(w[i]+cw<=c)
{
cw+=w[i];cv+=v[i];
dfs(i+1);
cw-=w[i];cv-=v[i];
}
dfs(i+1);
}
int main()
{
cin>>n>>c;
for(int i=0;i<n;i++) cin>>w[i];
for(int i=0;i<n;i++) cin>>v[i];
bestv=0;cw=0;cv=0;
dfs(0);
cout<<bestv<<endl;
return 0;
}
intput:
5 10
2 2 6 5 4
6 3 5 4 6
output:
15