题目描述:
dp分析:
解题代码:
#include<iostream>
using namespace std;
const int N=1e3+6;
int f[N][N];
int a[N];
int s[N];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d",&s[i]);
s[i]+=s[i-1];//前缀和
}
for(int i=1;i<n;i++){
for(int j=1;j+i<=n;j++){
int l=j,r=j+i;
f[l][r]=1e8;//初始化为最大值
for(int k=l;k<r;k++){
f[l][r]=min(f[l][r],f[l][k]+f[k+1][r]+s[r]-s[l-1]);
}
}
}
cout<<f[1][n];
return 0;
}