1154 能量项链

今天写的是我的第二篇动规,区间动规——看起来和堆好像。
我从别人(博客)那里学了一点,是这个人的

http://blog.csdn.net/a351357741/article/details/6493945
我看了一遍,自己写的,但算法思路基本一致,下面是代码

#include<stdio.h>
int N;
int a[200*2];
int dp[200*2][200*2];
int main()
{
    scanf("%d",&N);
    int i,j,k;
    int len=2;
    int max;
    int E=0;
    for(i=1;i<=N;i++)
    {
        scanf("%d",&a[i]);
        a[N+i]=a[i];
    }
    for(len=2;len<=N;len++)//len为合成珠子数 
    {
        for(i=1;i<=2*N;i++)//第几个珠子坐标(2*N是将前面重复的再算一遍)
        {
            j=i+len-1;//j为珠子末数字 
            max=0;
            for(k=i;k<j;k++)
            {
                if(max<dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1])
                max=dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1];
            }
            dp[i][j]=max;
            if(E<dp[i][j])
            E=dp[i][j];
        }       
    }

    printf("%d",E); 
    return 0;
}

比较简单,所以很繁琐,欢迎批评。

猜你喜欢

转载自blog.csdn.net/lumingjia819/article/details/51981086