区间dp学习3——括号匹配 ——做题反思
发布日期:2021-05-07 03:07:41 浏览次数:23 分类:精选文章

本文共 749 字,大约阅读时间需要 2 分钟。

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在dp这里最重要的是思考过程,代码不细写了,思考有了代码自然有的

#include
#include
#include
using namespace std;const int N = 200;char a[N];int dp[N][N];int solve();int main(){ while (cin >> a + 1) { if (a[1] == 'e' && a[2] == 'n' && a[3] == 'd')break; cout << solve() << endl; }}int solve(){ int n = strlen(a + 1); memset(dp, 0, sizeof(dp)); for (int len = 1; len < n; len++) for (int i = 1; i + len <= n; i++) { int j = i + len; for (int k = i + 1; k <= j; k++) { if ((a[i] == '('&&a[k]==')')||(a[i] == '['&&a[k] == ']')) dp[i][j] = max(dp[i][j], dp[i + 1][k - 1] + dp[k][j] + 2); else dp[i][j] = max(dp[i][j], dp[i + 1][k - 1] + dp[k][j]); } } return dp[1][n];}

很庆幸,今天能够对区间dp有一个清晰的认识,继续努力,早日结束此部分!

上一篇:区间dp学习4——poj 1651 Multiplication Puzzle——题后反思
下一篇:区间dp学习2——打表、四边形优化区间枚举(四边形区间优化学习1)

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月10日 12时01分25秒