题目描述:

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;
}


















