UVA1626 - Brackets sequence
来源:互联网 发布:大音希声大象无形 知乎 编辑:程序博客网 时间:2024/06/05 19:09
设串s至少需要增加d[s]个括号:
1.若s形如(s’)则d[s] 可转移为d[s’];
2.若s由至少两个字符组成,则可以把S分为A,B两个部分d[s] = d[A] +d[B];
边界:S为空时d[s] = 0,S为一个字符时d[s] = 1;
注意:一个串在进行第一个处理后还要进行第二个处理。
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <map>#include <vector>#include <cmath>using namespace std;int dp[105][105];string s;int match(char s1, char s2){ if((s1 == '(' && s2 == ')') || (s1 == '[' && s2 == ']')) return 1; return 0;}void print(int s1, int s2){ if(s1 > s2)return ; if(s1 == s2){ if(s[s1] == '(' || s[s1] == ')') cout << "()"; else cout << "[]"; return ; } int ans = dp[s1][s2]; if(match(s[s1], s[s2]) && ans == dp[s1+1][s2-1]) { cout << s[s1]; print(s1+1, s2-1); cout << s[s2]; return ; } for(int k = s1; k < s2; k++) { if(dp[s1][k] + dp[k+1][s2] == ans) { print(s1, k); print(k+1, s2); return ; } }}int main(){ // freopen("in.txt", "r", stdin); int t; cin >> t; getchar(); while(t--) { getchar(); getline(cin, s); int n = s.size(); for(int i = 0; i < n; i++) { dp[i][i] = 1; dp[i+1][i] = 0; } for(int i = n - 2; i >= 0; i--) for(int j = i+1; j < n; j++) { dp[i][j] = n; if(match(s[i], s[j]))dp[i][j] = min(dp[i][j], dp[i+1][j-1]); for(int k = i; k < j; k++) dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j]); } print(0, n - 1); cout << endl; if(t) cout << endl; } return 0;}
0 0
- uva1626 Brackets sequence
- UVa1626 Brackets sequence
- UVA1626 - Brackets sequence
- UVA1626 Brackets sequence
- [UVA1626]Brackets sequence(dp)
- UVa1626 Brackets sequence
- UVA1626 / ZOJ1463 Brackets sequence 区间DP
- UVA1626[Brackets sequence] 区间动态规划
- UVA1626 - Brackets sequence(区间DP--括号匹配+递归打印)
- uva1626 poj 1141 Brackets Sequence 区间dp 打印路径
- 例题9-10 UVa1626&&POJ1141 Brackets Sequence(DP)
- #UVA1626#Brackets sequence(括号序列---石子归并类Dp)
- Brackets Sequence
- Brackets Sequence
- Brackets sequence
- Brackets Sequence
- Brackets Sequence
- Brackets Sequence
- GIS+=地理信息+云计算技术——私有云架构设计(4)软件资源规划
- 图论——昂贵的聘礼
- 二分求幂 1
- android SharedPreferences详解
- Python爬虫基础
- UVA1626 - Brackets sequence
- htaPyfilpmiS.71
- RtlAnsiStringToUnicodeSize routine
- 如何用消息系统避免分布式事务?
- android 找不到启动activity
- Qt错误 No rule to make target needed by 'Makefile'
- Scatter文件编写
- JBPM6 - helloworld^_^
- google group翻译(1)