uva 1626 - Brackets sequence dp(区间,坑题, 难度适中,难ac)
2016-07-03 22:55
519 查看
题目
这个题输入很坑,首先各种空格输入输出,然后样例还只有一组。
输入:先输入T,表示有T组数据。
然后每组有两行组成,第一行是空串,第二行是字符串(可能是空串)。
输出:除了答案之外,答案与答案之间要空一行。
这个题输入很坑,首先各种空格输入输出,然后样例还只有一组。
输入:先输入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] ); } return 0; }
相关文章推荐
- 开发中 十六进制的颜色值直接转为ios可用的UIColor
- Android系统应用---SystemUI之一:SystemUI概述和创建启动流程分析
- 关于UITableView中删除某一行方法的使用
- 修改UITextField的placeholder颜色
- UIStepper
- easyui radio 无法选中的原因
- 使用easyUI遇到的一些小问题
- POJ2299 Ultra-QuickSort
- LeetCode - 111. Minimum Depth of Binary Tree
- UIPageControl
- Deep Reinforcement Learning for Dialogue Generation-关于生成对话的深度强化学习
- Android UI 设计 练习1 ——登陆界面
- LeetCode 300 Longest Increasing Subsequence
- PP66 EEPPPPMM SSyysstteemm AAddmmiinniissttrraattiioonn GGuuiiddee 16 R1
- query和exec区别
- jstl 或者el表达式如何读取request中的对象
- quick_sort <算法导论>实现
- 【一天一道LeetCode】#115. Distinct Subsequences
- 【一天一道LeetCode】#115. Distinct Subsequences
- UIProgressView