#include<stdio.h> long int f[600][600]={0},a[251]; int max(int t1,int b) { return t1>b? t1:b; } main() { int i,j,n,k,t=0; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); a[i+n]=a[i]; } for(i=1;i<n;i++) { for(j=1;j<=2*n-i;j++) { for(k=j;k<i+j;k++) { f[j][j+i]=max(f[j][k]+f[k+1][j+i]+a[j]*a[k+1]*a[j+i+1],f[j][j+i]); } } } for(i=1;i<=n;i++) t=max(t,f[i][i+n-1]); printf("%d",t); return 0; }
一道动归题http://www.rqnoj.cn/Problem_5.html
以前看过 一会以为是做过的题目 前几天发现没有提交记录。。。 才发现自己只是看过题解,,