举杯消愁愁更愁,月底账单入水流 • 4个月前
//递推
//对于a[i][j],考虑前i个物品,背包容量为j是,可以装的最大价值总和
//a[i][j]=max(,);
#include<bits/stdc++.h>
using namespace std;
int dp[105][100005];
int w[105],v[105];
int main(){
int n,c;
cin>>n>>c;
for(int i=1;i<=n;i++) cin>>w[i]; //空间
for(int i=1;i<=n;i++) cin>>v[i]; //价值
for(int i=1;i<=n;i++){
for(int j=1;j<=c;j++){
if(j-w[i]>=0) dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]); //选这个物品或不选
else dp[i][j]=dp[i-1][j]; //若放不进去下一个,则只能不放
}
}
cout<<dp[n][c]<<endl;
return 0;
}
评论:
请先登录,才能进行评论