题目连接:http://118.190.20.162/view.page?gpid=T49
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
const int INF=1<<30;
int dp[1010][1010],a[1010],sum[1010];
int n;
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
for(int i=2;i<=n;i++){
for(int j=1,k=i;j<=n-i+1;j++,k++){
dp[j][k]=INF;
for(int t=j;t<k;t++){
if(dp[j][k]>dp[j][t]+dp[t+1][k]+sum[k]-sum[j-1]){
dp[j][k]=dp[j][t]+dp[t+1][k]+sum[k]-sum[j-1];
}
}
}
}
cout<<dp[1][n]<<endl;
return 0;
}