问题在哪里
查看原帖
问题在哪里
1393299
jiangdr楼主2024/9/11 22:58
#include<bits/stdc++.h>
using namespace std;
int a[210],b[210],f1[210][210],f2[210][210]; 
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<=n;i++)
	    b[i]=a[i]+b[i-1];
	for(int i=n+1;i<=(n*2);i++)
		b[i]=b[i-1]+a[i-n];
	for(int len=1;len<=n;len++)
		for(int i=1;i+len-1<(n*2);i++)
		{
			f2[i][i+len-1]=1e9+7;
			for(int k=i;k<i-len+1;k++)
			{
				f1[i][i+len-1]=max(f1[i][i+len-1],f1[i][k]+f1[k+1][i+len-1]+b[i+len-1]-b[i-1]);
				f2[i][i+len-1]=min(f2[i][i+len-1],f2[i][k]+f2[k+1][i+len-1]+b[i+len-1]-b[i-1]);
			}
		}
	int maxf1=0,minf2=1e9;
	for(int i=1;i<=n;i++)
	{
		cout<<f1[i][i+n-1]<<" "<<f2[i][i+n-1]<<endl;
		if(f1[i][i+n-1]>maxf1) maxf1=f1[i][i+n-1];
		if(f2[i][i+n-1]<minf2) minf2=f2[i][i+n-1];
	}
	cout<<endl<<minf2<<endl<<maxf1;		
	return 0;
}
2024/9/11 22:58
加载中...