UVa 1626 括号序列(矩阵连乘)
2017-02-06 19:39
381 查看
https://vjudge.net/problem/UVA-1626
题意:
输入一个由 "(" 、 ")" 、 "[" 、 "]" 构成的序列,添加尽量少的括号,得到一个规则序列。
思路:
d[i][j]表示 i~j 需要添加的最少个数,具体看代码吧,我也只是看着刘汝佳的代码写的 。
题意:
输入一个由 "(" 、 ")" 、 "[" 、 "]" 构成的序列,添加尽量少的括号,得到一个规则序列。
思路:
d[i][j]表示 i~j 需要添加的最少个数,具体看代码吧,我也只是看着刘汝佳的代码写的 。
#include<iostream> #include<algorithm> #include<string> #include<cstring> using namespace std; char s[105]; int n; int d[105][105]; bool cmp(char a, char b) { return a == '('&& b == ')' || (a == '['&& b == ']'); } void dp() { for (int i = 0; i < n; i++) { d[i + 1][i] = 0; //初始化,对应于下面的d[i+1][j-1] //也就是如果为()或[],此时不需要添加括号 d[i][i] = 1; //这个对应于单个'('、')'、'['、']'的情况 } //从短区间开始枚举 for (int i = n - 2; i >= 0; i--) { for (int j = i + 1; j < n; j++) { d[i][j] = n; //如果为()or[],则这最外面的不用管 if (cmp(s[i], s[j])) d[i][j] = min(d[i][j], d[i + 1][j - 1]); for (int k = i; k < j; k++) d[i][j] = min(d[i][j], d[i][k] + d[k + 1][j]); } } } void print(int i, int j) { if (i>j) return; if (i == j) { if (s[i] == '(' || s[i] == ')') cout << "()"; else cout << "[]"; return; } int ans = d[i][j]; //如果和里面所要加的括号数一样,那么 i 和 j 是不需要加括号的 if (cmp(s[i], s[j]) && ans == d[i + 1][j - 1]) { cout << s[i]; print(i + 1, j - 1); cout << s[j]; return; } for (int k = i; k < j; k++) { if (ans == d[i][k] + d[k + 1][j]) { print(i, k); print(k + 1, j); return; } } } int main() { //freopen("D:\\txt.txt", "r", stdin); int T; cin >> T; getchar(); while (T--) { gets(s); gets(s); n = strlen(s); dp(); print(0, n - 1); cout << endl; if (T) cout << endl; } return 0; }
相关文章推荐
- uva1626 括号序列
- 区间DP(括号序列,uva1626)
- (mark)UVA-1626 括号序列,转移方程很有意思
- dp uva1626 括号序列
- UVA 1626 括号序列
- UVa 1626 括号序列——区间DP
- [UVa1626]括号序列
- uva 1626 括号序列
- 例题9-10 括号序列 UVa1626
- Uva 1626,括号序列
- UVA 1626 括号序列(区间dp)
- 括号序列(uva 1626)
- uva 10003(动态规划起步第四天 矩阵连乘)
- 矩阵连乘 和表达式加括号求最大值
- UVA1626 - Brackets sequence(区间DP--括号匹配+递归打印)
- UVA - 348 Optimal Array Multiplication Sequence 最优矩阵连乘
- UVA 10870 Recurrences 矩阵连乘 快速幂取模
- ***UVa-1626 Brackets sequence ACM解题报告(巧妙地递推+打印)经典的括号 dp题
- NYOJ15 - UVA1626 括号匹配问题(dp)
- NYOJ15 - UVA1626 括号匹配问题(区间dp)