#include<iostream>//n个物品,各有价格和体积,背包容量V,求装满背包的最大价值装法
using namespace std;
#define maxn 30
int a[maxn],b[maxn];
int n,v,maxv=0;
void DFS(int idex, int suma, int sumb)
{
if (idex == n)return;
DFS(idex + 1, suma, sumb);
if (suma + a[idex] <= v)
{
if (sumb +b[idex] >maxv)
maxv =sumb + b[idex];
DFS(idex + 1, suma + a[idex], sumb + b[idex]);
}
}
int main()
{
cin >> n >> v;
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < n; i++)
cin >> b[i];
DFS(0, 0, 0);
cout << maxv <<endl;
return 0;
} 
京公网安备 11010502036488号