1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N = 210; int f[N][N]; int w[N]; int n; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> w[i]; w[i + n] = w[i]; } // 长度小于等于2自动初始化为0 for (int len = 3; len <= n + 1; len++)// 选出的断点必须取两次 最后一步特殊考虑 { for (int i = 1; i + len - 1 <= 2 * n; i++) { int j = i + len - 1; for (int k = i + 1; k < j; k++) { f[i][j] = max(f[i][j], f[i][k] + f[k][j] + w[i] * w[k] * w[j]); } } } int res = 0; for (int i = 1; i <= n; i++) { res = max(res, f[i][n + i]); } cout << res; return 0; }
- 1
信息
- ID
- 1536
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 6
- 已通过
- 4
- 上传者