我是用区间dp做的
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[350],dp[350][350],sum[350],n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
for(int len=2;len<=n;len++) for(int i=1;i+len-1<=n;i++){
int l=i,r=i+len-1;
dp[l][r]=0x3f3f3f3f;
for(int k=i;k<=i+len-1;k++) dp[l][r]=min(dp[l][r],dp[l][k]+dp[k+1][r]+sum[r]-sum[l-1]);
}
cout<<dp[1][n];
return 0;
}
by aochiao @ 2024-05-10 20:51:31
@[Ice_Fist](/user/1043209) 求关注QwQ
by aochiao @ 2024-05-10 20:52:05