这个应该可以过吧,WA7、9、10
#include<bits/stdc++.h>
using namespace std;
int n,m,a[610],f1[610][610],sum[610],ans1 = 2147483647;
int main()
{
scanf("%d",&n);
for(int i = 1;i <= n;i ++)
{
scanf("%d",&a[i]);
a[i + n] = a[i];
sum[i] = sum[i - 1] + a[i];
f1[i][i] = 0;
}
for(int i = n + 1;i <= 2 * n;i ++)
sum[i] = sum[i - 1] + a[i],f1[i][i] = 0;
for(int l = 2;l <= n;l ++)
for(int i = 1;i <= 2 * n - l + 1;i ++)
{
int j = i + l - 1;
f1[i][j] = 2147483647;
for(int k = i;k < j;k ++)
{
f1[i][j] = min(f1[i][j],f1[i][k] + f1[k + 1][j]);
}
f1[i][j] += sum[j] - sum[i - 1];
}
for(int i = 1;i <= n;i ++)
ans1 = min(ans1,f1[i][n - 1 + i]);
printf("%d\n",ans1);
return 0;
}