我的code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=105;
int n,dp[N*2][N*2],a[N];
signed main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
a[i+n]=a[i];
}
for(int i=2*n-1;i>=1;i--){
for(int j=i+1;j<=2*n;j++){
for(int k=i;k<j;k++){
int sum=dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1];
dp[i][j]=max(dp[i][j],sum);
}
}
}
int ans=0;
for(int i=1;i<=n+1;i++) ans=max(ans,dp[i][i+n-1]);
printf("%lld",ans);
return 0;
}
注意这里第 5 行我写的是 a[N]
,应该为 a[N*2]
,但是这份代码能 AC。