石子合并 – 算法板子

#include<bits/stdc++.h> using namespace std; const int N = 310; int dp[N][N], a[N], s[N]; int n; int main() {     cin >> n;     for (int i = 1; i <= n; ++i) {         cin >> a[i];         s[i] = s[i - 1] + a[i];     }     memset(dp, 0x3f, sizeof dp);     for (int i = 1; i <= n; ++i) {         for (int j = 1; j + i - 1 <= n; ++j) {             int k = j + i - 1;             if (i == 1) {                 dp[j][j] = 0;                 continue;             }             for (int l = j; l < k; ++l) {                 dp[j][k] = min(dp[j][k], dp[j][l] + dp[l + 1][k] + s[k] - s[j - 1]);             }         }     }     cout << dp[1][n] << endl;     return 0; }

石子合并 – 算法板子leetcode刷题题解部分资料来自网络,侵权毕设源码联系删除

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 石子合并 – 算法板子leetcode刷题题解