AC

键盘敲碎夜深沉,代码如麻乱假真 · 发布于 2024-11-24 · 浏览 433 回复 0
//递推
//对于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;
}

全部回复 共 0 条

还没有人回复。往下写第一条。

发表回复