简单模板题

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
const int INF=1e9+7;
int dp[1005][1005],num[1005];
int main()
{
int n;
cin>>n;
int i,j,len,k;
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
dp[i][j]=(i==j?0:INF);
num[0]=0;
for(i=1;i<=n;i++)
{
cin>>num[i];
num[i]+=num[i-1];
}
for(len=2;len<=n;len++)
{
for(i=1;i<n;i++)
{
j=len+i-1;
if(j<=n)
for(k=i;k<j;k++)
dp[i][j]=min(dp[i][j],dp[k+1][j]+dp[i][k]+num[j]-num[i-1]);
}
}
cout<<dp[1][n]<<endl;
return 0;
}