Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
148997 | 曾煦翔 | 合并石子1 | C++ | 通过 | 100 | 0 MS | 632 KB | 573 | 2024-05-25 15:28:42 |
#include <bits/stdc++.h> using namespace std; const int N = 310; int dp[N][N], len, a[N], n, sum[N]; int main(){ cin >> n; memset(dp, 0x3f, sizeof(dp)); for (int i = 1; i <= n; i++){ cin >> a[i]; sum[i] = sum[i - 1] + a[i]; dp[i][i] = 0; } for (int len = 2; len <= n; len++){ for (int i = 1; i <= n - len + 1; i++){ int j = i + len - 1; for (int k = i; k < j; k++) dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + sum[j] - sum[i - 1]); } } cout << dp[1][n]; }