神秘的神秘 • 2小时前
using namespace std;
int dp[201][201] = {0};
int cost[201][201] = {0};
int main() {
int A[201] = {0}, B[201] = {0}, n, m = 1e9, a;
cin >> n;
A[0] = 0;
for (int i = 1; i <= n; i++) {
cin >> B[i];
B[i + n] = B[i];
}
for (int i = 1; i <= 2 * n - 1; i++) {
A[i] = A[i - 1] + B[i];
dp[i][i] = 0;
}
for (int t = 2; t <= n; t++) {
for (int i = 1; i <= 2 * n - 1 - t + 1; i++) {
int j = i + t - 1;
int x = dp[i][i] + dp[i + 1][j] + A[j] - A[i - 1];
for (int k = i; k < j; k++) {
if (x > dp[i][k] + dp[k + 1][j] + A[j] - A[i - 1]) {
x = dp[i][k] + dp[k + 1][j] + A[j] - A[i - 1];
}
}
dp[i][j] = x ;
}
}
for (int i = 1; i <= n - 1; i++) {
m = min(m, dp[i][n + i - 1]);
}
cout << m;
return 0;
}
评论:
请先登录,才能进行评论