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