80分求助,wa了1,8两个点
查看原帖
80分求助,wa了1,8两个点
350760
gzxq楼主2022/11/10 19:49
#include<bits/stdc++.h>
using namespace std;

int n,a[103][2];
int dp[103][103];

int main()
{
	scanf("%d",&n);
	for(int i=1; i<=n; i++) 
	{
		scanf("%d",&a[i][0]);
		a[i-1][1]=a[i][0];
	}
	a[n][1]=a[1][0];
//	for(int i=1; i<=n; i++) printf("%d %d\n",a[i][0],a[i][1]);
	for(int len=2; len<=n; len++)
	{
		for(int i=1; i<=n; i++)
		{
			int j=i+len-1;
			int p=j;
			if(j>n) j-=n;
			for(int k=i;k<=p-1;k++)
			{
				int q=k;
				if(q>n) q-=n;
				int l=dp[i][q]+dp[q+1][j]+a[i][0]*a[q][1]*a[j][1];
				if(l>dp[i][j])
				dp[i][j]=l;
			}
//			printf("%d %d %d\n",i,j,dp[i][j]);
		}
	}
	int ans=0;
	for(int i=2; i<=n; i++) ans=max(ans,dp[i][i-1]);
	ans=max(ans,dp[1][n]);
	printf("%d",ans);
	return 0;
}
2022/11/10 19:49
加载中...