嗯...
题目链接:https://www.luogu.com.cn/problem/P1063
这道题首先要读懂题目,然后往上套区间dp,要转换成链式。
AC代码:
1 #include<cstdio> 2 #include<iostream> 3 4 using namespace std; 5 6 int a[205],f[405][405]; 7 8 int main(){ 9 int n; 10 scanf("%d",&n); 11 for(int i=1;i<=n;i++){ 12 scanf("%d",&a[i]); 13 a[n+i]=a[i]; 14 } 15 for(int i=2;i<=n+1;i++){ 16 for(int l=1;l+i-1<=n*2;l++){ 17 int r=l+i-1; 18 for(int k=l+1;k<r;k++){ 19 f[l][r]=max(f[l][r],f[l][k]+f[k][r]+a[l]*a[k]*a[r]); 20 } 21 } 22 } 23 int ans=0; 24 for(int i=1;i<=n;i++) ans=max(ans,f[i][i+n]); 25 printf("%d",ans); 26 return 0; 27 }