AC

举杯消愁愁更愁,月底账单入水流  •  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;
}


评论:

请先登录,才能进行评论