动态规划,应该是细节错了吧……
#include<bits/stdc++.h>
using namespace std;
int a[105];
int dp[105][105];
int main(){
int n,he,r,zhong;
cin>>n;
memset(dp,0x3f,sizeof(dp));
for(int i=1;i<=n;i++){
cin>>a[i];
dp[i][i]=a[i];
}
dp[0][0]=0;
for(int l=2;l<=n;l++){
for(int i=0;i<n;i++){
r=i+l-1;he=0;
zhong=dp[i][i]+dp[(i+1)%n][r%n];
for(int j=i+1;j<r;j++){
zhong=min(zhong,dp[i][j%n]+dp[(j+1)%n][r%n]);
}
for(int j=i;j<=r;j++)he+=a[j%n];
dp[i][r%n]=min(dp[i][r%n],zhong+he);
}
}
zhong=dp[0][n-1];
for(int i=0;i<n;i++){
zhong=min(zhong,dp[i][(i+n-1)%n]);
}
// for(int i=0;i<n;i++){
// for(int j=0;j<n;j++)cout<<dp[i][j]<<" ";
// cout<<endl;
// }
cout<<zhong<<endl;
return 0;
}