#include <iostream>
using namespace std;
int v[10000];
int w[10000];
int bag(int n,int W){
int F[n+1][W+1];
for(int i=0;i<=n;i++)
{
for(int j=0;j<=W;j++){
F[i][0]=0;
F[0][j]=0;
if(j-w[i]<0){
F[i][j]=F[i-1][j];
}
else{
F[i][j]=max(F[i-1][j],v[i]+F[i-1][j-w[i]]);
}
}
}
return F[n][W];
}
int main(){
int n,W;
cin>>n>>W;
for(int i=1;i<=n;i++){
cin>>v[i];
}
for(int j=1;j<=n;j++){
cin>>w[j];
}
int result=bag(n,W);
cout<<result<<endl;
}
刷题-dp经典问题-背包问题
最新推荐文章于 2023-01-04 22:17:16 发布