#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

以前看过 一会以为是做过的题目 前几天发现没有提交记录。。。 才发现自己只是看过题解,,

posted on 2013-01-18 23:23  海暗  阅读(118)  评论(0编辑  收藏  举报