比赛 清明时悲哀杯 评测结果 AAAAAAAAAA
题目名称 石子合并 最终得分 100
用户昵称 swttc 运行时间 0.004 s
代码语言 C++ 内存使用 0.41 MiB
提交时间 2017-03-31 19:16:12
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int f[110][110],n,s[110],minn,sum[110][110];
int main()
{
	freopen("shizi.in","r",stdin);
	freopen("shizi.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	 scanf("%d",&s[i]);	
	for(int i=1;i<=n;i++)
	 for(int j=1;j<=n;j++)
	  {
	  	if(i==j) 
		  sum[i][j]=s[i];
		  f[i][j]=0;
	  	//else f[i][j]=21474836;
	  }
	for(int i=1;i<=n;i++)
	 for(int j=i+1;j<=n;j++)
	  sum[i][j]=sum[i][j-1]+s[j];
	//for(int l=2;l<=n;l++)
	// for(int i=1;i<=n-l+1;i++)
	for(int i=n-1;i>=1;i--)
	 for(int j=i+1;j<=n;j++)
	 {
	 	//int j=i+l-1;
	 	minn=21474836;
	 	for(int k=i;k<=j-1;k++)
	 	minn=min(f[i][k]+f[k+1][j]+sum[i][j],minn);
	 	f[i][j]=minn;
	 	//cout<<"i"<<i<<"j"<<j<<"f"<<f[i][j]<<endl;
	 }
	printf("%d",f[1][n]);
	return 0;
}