比赛 清明时悲哀杯 评测结果 AAAAAAAAAA
题目名称 石子合并 最终得分 100
用户昵称 liuyu 运行时间 0.004 s
代码语言 C++ 内存使用 0.39 MiB
提交时间 2017-03-31 20:26:53
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;    
const int M=101;
const long long INF=1000000000;
int n,f[M][M],sum[M][M],stone[M];  
int main()  
{  
    freopen("shizi.in","r",stdin);
	freopen("shizi.out","w",stdout);
    int i,j,k,t;  
    cin>>n;  
    for(i=1;i<=n;i++)  
        scanf("%d",&stone[i]);  
  
    for(i=1;i<=n;i++)  
    {  
        f[i][i]=0;  
        sum[i][i]=stone[i];  
        for(j=i+1;j<=n;j++)  
            sum[i][j]=sum[i][j-1]+stone[j];  
    }  
  
    for(int len=2;len<=n;len++)  
    {  
        for(i=1;i<=n-len+1;i++) 
        {  
            j=i+len-1;  
            f[i][j]=INF;  
            for(k=i;k<=j-1;k++)  
            {  
                if(f[i][j]>f[i][k]+f[k+1][j]+sum[i][j])  
                    f[i][j]=f[i][k]+f[k+1][j]+sum[i][j];  
            }  
        }  
    }  
    printf("%d",f[1][n]);    
    return 0;  
}