#include<bits/stdc++.h>
using namespace std;
int n,W,maxval=0;
int w[1005],c[1005];
void dfs(int index,int sumW,int sumC)
{
if(index==n)return;
dfs(index+1,sumW,sumC);
if(sumW+w[index]<=W)
{
if(sumC+c[index]>maxval)
{
maxval=sumC+c[index];
}
dfs(index+1,sumW+w[index],sumC+c[index]);
}
}
int main(){
cin>>n>>W;
for(int i=0;i<n;i++)
{
cin>>w[i];
}
for(int i=0;i<n;i++)
{
cin>>c[i];
}
dfs(0,0,0);
cout<<maxval;
return 0;
}
dfs解决背包问题
最新推荐文章于 2025-03-06 10:16:27 发布