求助
查看原帖
求助
830478
ceert楼主2023/5/13 15:47
#include<bits/stdc++.h>
using namespace std;
int dp[301][301],n,a[310],sum,dp2[301][301];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			dp[i][j]=11451419;
		}  
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];	
		dp[i][i]=0; 
		dp2[i][i]=0;
	} 
	
	for(int len=2;len<=n;len++)
		for(int i=1;i<=n;i++)
			{
			    sum=0;
				int j=i+len-1;
				for(int x=i;x<=j;x++)
				{
					sum+=a[x];
				}
				if(j>n) break;
				for(int k=i;k<j;k++)
				{
					dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum);
					dp2[i][j]=max(dp2[i][j],dp2[i][k]+dp2[k+1][j]+sum);
				}
			}
	cout<<dp[1][n]<<"\n"<<dp2[1][n];
	return 0;
}
2023/5/13 15:47
加载中...