石子合并

来源:互联网 发布:遇见交友软件 编辑:程序博客网 时间:2024/06/05 00:42
#include<stdio.h>
int a[210],s[210],
 f[210][210],fx[210][210];
int max(int x,int y){
 return x>y?x:y;
}int min(int x,int y){
 return x<y?x:y;
}int main(){
 int i,j,k,n;
 scanf("%d",&n);
 for(i=1;i<=n;i++){
  scanf("%d",&a[i]);
  a[i+n]=a[i];
  s[i]=s[i-1]+a[i];
 }for(i=n+1;i>0;i--)
  for(j=i+1;j<=n;j++){
   for(k=i;k<j;k++)
    f[i][j]=min(f[i][j],f[i][k]+f[k+1][j])
     +s[j]-s[i-1];
   for(k=j;k>=i;k--)
    fx[i][j]=min(fx[i][j],fx[i][k]+fx[k+1][j])
     +s[j]-s[i-1];
 }printf("%d\n%d\n",f[1][n],fx[1][n]);
 return 0;
}
0 0
原创粉丝点击