和题解不一样,40pts求助
查看原帖
和题解不一样,40pts求助
372336
一个句号楼主2023/8/5 09:07
#include<iostream>
#include<cstring>
using namespace std;
int n,bl,ml,ans;
int a[55],dp[55][1005];//到第i次演出时ml为j的最大音量 
int main(){
	cin>>n>>bl>>ml;
	for(int i=1;i<=n;i++)
		cin>>a[i];
		
//	memset(dp,-1,sizeof(dp));
	
	//初始化:第一次dp内存bl
	for(int i=1;i<=ml;i++)
		dp[0][i]=bl; 
	
	for(int i=1;i<=n;i++){
		for(int j=ml;j>=0;j--){
			int t1,t2;
			t1=dp[i-1][j-a[i]]+a[i];
			t2=dp[i-1][j+a[i]]-a[i];
			if(j>=a[i]&&t1>dp[i][j])dp[i][j]=t1;
			if(j+a[i]<=ml&&t2>dp[i][j])dp[i][j]=t2; 
		}
	}
	for(int i=1;i<=ml;i++){
		if(dp[n][i]<=ml)
		ans=max(ans,dp[n][i]);
	}
	cout<<ans;
	return 0;
}
2023/8/5 09:07
加载中...