#10 的输入第二行不只 n 个数。如下代码会 RE。
#include<cstdio>
#include<assert.h>
#define max(a,b) (a>b?a:b)
using namespace std;
const int N=210;
int x[N],y[N],dp[N][N];
int main() {
int n,a;
scanf("%d",&n);
for(int i=1;i<=n;i++) {
scanf("%d",&x[i]);
y[i-1]=x[i];
}
assert(scanf("%d",&a)!=1);
y[n]=x[1];
for(int i=1;i<=n;i++) {
x[i+n]=x[i];
y[i+n]=y[i];
}
for(int len=2;len<=n;len++)
for(int s=1;s<=n*2-len+1;s++) {
int e=s+len-1;
for(int i=s;i<e;i++)
dp[s][e]=max(dp[s][e],dp[s][i]+dp[i+1][e]+x[s]*x[i+1]*y[e]);
}
int ans=0;
for(int i=1;i<=n;i++)
ans=max(ans,dp[i][i+n-1]);
printf("%d",ans);
return 0;
}
#10 输入:
80
2 3 5 192 3 5 992 493 95 102 3 5 102 83 455 102 33 45 102 23 45 302 3 15 102 113 115 102 3 35 102 3 45 102 3 55 112 3 5 102 3 785 202 93 5 102 3 85 102 3 5 102 3 5 102 3 5 102 3 5 102 3 85 102 3 5 102 3 5 102 3 5 102 3 17 112 13 5 102 23 35
望修复。