qqq

 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>

using namespace std;
int d[105][105],sum[105];
int dp(int x,int y)
{
    if(d[x][y]!=-1) return d[x][y];
    if(x==y) return d[x][y]=0;
    int temp=999999999;
    for(int i=x;i<y;++i) {
        temp=min(temp,dp(x,i)+dp(i+1,y)+sum[y]-sum[x-1]);
    }
    return d[x][y]=temp;
}
int main()
{
    memset(d,-1,sizeof d);
    int n;
    cin>>n;
    for(int i = 1; i <= n; ++i) {
        int x;
        cin>>x;
        sum[i]=x+sum[i-1];
    }
    cout<<dp(1,n)<<endl;
    return 0;
}

 

posted @ 2016-12-18 15:35  贱人方  阅读(270)  评论(0)    收藏  举报