DTGAME - Tiền bạc luôn là thứ quý giá
Tác giả: ladpro98
Ngôn ngữ: C++
#include <bits/stdc++.h>
const int N = 2020;
using namespace std;
int F[N][N], P[N][N];
int n, s[N], a[N];
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
s[i] = s[i - 1] + a[i];
}
for(int i = 0; i <= n + 1; i++) P[i][i] = i;
for(int len = 1; len <= n; len++)
for(int i = 1; i <= n - len; i++) {
int j = i + len;
for(int k = max(i, P[i][j - 1]); k <= P[i + 1][j] && k < j; k++) {
int t = min(s[k] - s[i - 1] + F[i][k], s[j] - s[k] + F[k + 1][j]);
if (F[i][j] < t) {
F[i][j] = t; P[i][j] = k;
}
}
}
cout << F[1][n];
return 0;
}