Lee • 10小时前
using namespace std; int dp[401][401]; int a[401]; int n;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
a[i + n] = a[i];
}
memset(dp, 0xf0, sizeof dp);
for (int i = 1; i <= 2 * n; i++) {
dp[i][i + 1] = 0;
}
for (int len = 3; len <= n + 1; len++) {
for (int left = 1, right = len; right <= 2 * n; left++, right++) {
for (int mid = left + 1; mid < right; mid++) {
dp[left][right] = max(dp[left][right], dp[left][mid] + dp[mid][right] + a[left] * a[mid] * a[right]);
}
}
}
int ans = 0;
for (int i = 1; i <= n; i++) {
ans = max(ans, dp[i][n + i]);
}
cout << ans;
return 0;
}
评论:
请先登录,才能进行评论