uva 1626 - Brackets sequence dp(区间,坑题, 难度适中,难ac)
来源:互联网 发布:网络机顶盒双人游戏 编辑:程序博客网 时间:2024/06/05 22:49
题目
这个题输入很坑,首先各种空格输入输出,然后样例还只有一组。
输入:先输入T,表示有T组数据。
然后每组有两行组成,第一行是空串,第二行是字符串(可能是空串)。
输出:除了答案之外,答案与答案之间要空一行。
#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<vector>using namespace std;#define all(x) (x).begin(), (x).end()#define for0(a, n) for (int (a) = 0; (a) < (n); (a)++)#define for1(a, n) for (int (a) = 1; (a) <= (n); (a)++)typedef long long ll;typedef pair<int, int> pii;const int INF =0x3f3f3f3f;const int maxn= 100 ;char s[maxn+10];int n,dp[maxn+5][maxn+5];bool match(char x,char y){ return x=='('&&y==')'||x=='['&&y==']';}void printchar(char x){ if(x=='('||x==')') printf("()"); else if(x=='['||x==']') printf("[]");}void print(int le,int ri){ if(le>ri) { return; } if(le==ri) { printchar(s[le]); return; } if(match(s[le],s[ri])&&dp[le][ri]==dp[le+1][ri-1]) { putchar(s[le]); print(le+1,ri-1); putchar(s[ri]); return; } int best=-1; for(int k=le+1;k<=ri;k++) { if(dp[le][k-1]+dp[k][ri]==dp[le][ri]) { best=k; break; } } print(le,best-1); print(best,ri);}int main(){ int T;scanf("%d",&T);getchar(); int kase=0; while(T--) { getchar();//每次输入之前都有空行 gets(s+1);//不能用scanf,因为有空串 n=strlen(s+1); for(int i=1;i<=n;i++) { dp[i][i]=1; } for(int add=1;add<n;add++) { for(int le=1;le+add<=n;le++) { int ri=le+add; dp[le][ri]=INF; if(match(s[le],s[ri])) { dp[le][ri]=dp[le+1][ri-1]; } for(int k=le+1;k<=ri;k++) { dp[le][ri]=min(dp[le][ri],dp[le][k-1]+dp[k][ri]); } } } if(kase++) putchar('\n');//输出与输出之间有空行 print(1,n);putchar('\n');// printf("%d\n",dp[1][n]); } return 0;}
0 0
- uva 1626 - Brackets sequence dp(区间,坑题, 难度适中,难ac)
- UVA 1626 - Brackets sequence 区间DP
- uva-1626 Brackets sequence 区间dp
- UVA 1626 Brackets sequence 区间DP
- POJ 1141 / UVa 1626 Brackets Sequence (区间DP&打印路径)
- UVa 1626:Brackets Sequence(DP)
- ★Uva 1626 && POJ 1141 Brackets sequence 详细题解(区间DP+递归打印)
- poj1141 Brackets Sequence 区间dp
- ZOJ1463:Brackets Sequence(区间DP)
- POJ1141 Brackets Sequence 区间DP
- pku1141 Brackets Sequence 区间DP
- poj1141 Brackets Sequence--区间dp
- Brackets Sequence (区间dp)
- Uva-1626-Brackets sequence
- UVA 1626 - Brackets sequence
- UVa 1626 Brackets sequence
- uva 1626 - Brackets sequence
- UVA-1626Brackets sequence
- HDU1863(最小生成树)
- 正则判断邮箱练习
- StringUtils 中的 startWith方法和startWithAny方法
- Java 8 Lambda表达式探险
- Linux 下 strace 命令用法总结
- uva 1626 - Brackets sequence dp(区间,坑题, 难度适中,难ac)
- [Android]_[注解库butterknife的基本使用]
- 进程间通信浅析
- Linux下串口调试及使用shell编程接收数据
- Objective-C方法的使用
- 面试集及经验收集
- iOS中,ARC的环境下的单例模式。
- android listview addHeaderView和addFooterView的注意事项
- iOS面试题【附部分答案】