括号序列(5倍经验)
2015-10-11 10:18
309 查看
点击送萝莉
题目描述 Description
定义满足以下规则字符串为规则序列,否则不是规则序列:
1.空序列是规则序列;
2.如果S是规则序列,那么(S),[S],{S}和也是规则序列;
3.如果A和B都是规则序列,那么AB也是规则序列。
例如,下面的字符串都是规则序列:
(),[],(()),([]),()[],()[()],{{}}<>,([]<>{{}}),<<{}>>
而以下几个则不是:
(,[,],)(,()),([(),<<,{(}),<{}>)
现在,给你一些由”(“、”)”、”[“、”]”、”{“、”}”、”<”、”>”构成的字符串,请判断该字符串是否为规则序列。
输入描述 Input Description
第一行:一个正整数N,表示测试数据组数;
接下来N行:每行一个括号序列(长度不超过L)。
输出描述 Output Description
共N行:对于每一个括号序列,判断其是否规则。
规则输出TRUE,否则输出FALSE。
样例输入 Sample Input
2
{()}<<>>
{{{{{}}}}
样例输出 Sample Output
TRUE
FALSE
首先我们先看某cy的一个错误的解法:
统计每个括号,比较匹配括号的出现次数是否相同。
然后。())( 就把他卡死了。
然后正解
正解就是统计的时候判断右括号出现前左括号的出现次数是否大于等于右括号出现次数+1就行了2333333333
题目描述 Description
定义满足以下规则字符串为规则序列,否则不是规则序列:
1.空序列是规则序列;
2.如果S是规则序列,那么(S),[S],{S}和也是规则序列;
3.如果A和B都是规则序列,那么AB也是规则序列。
例如,下面的字符串都是规则序列:
(),[],(()),([]),()[],()[()],{{}}<>,([]<>{{}}),<<{}>>
而以下几个则不是:
(,[,],)(,()),([(),<<,{(}),<{}>)
现在,给你一些由”(“、”)”、”[“、”]”、”{“、”}”、”<”、”>”构成的字符串,请判断该字符串是否为规则序列。
输入描述 Input Description
第一行:一个正整数N,表示测试数据组数;
接下来N行:每行一个括号序列(长度不超过L)。
输出描述 Output Description
共N行:对于每一个括号序列,判断其是否规则。
规则输出TRUE,否则输出FALSE。
样例输入 Sample Input
2
{()}<<>>
{{{{{}}}}
样例输出 Sample Output
TRUE
FALSE
首先我们先看某cy的一个错误的解法:
统计每个括号,比较匹配括号的出现次数是否相同。
然后。())( 就把他卡死了。
然后正解
正解就是统计的时候判断右括号出现前左括号的出现次数是否大于等于右括号出现次数+1就行了2333333333
#include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; char z[9999999]; char temp[9999999]; int f[9999999]; int main() { int a,n,c,shuzu=0; cin>>n; for(c=1;c<=n;c++) { scanf("%s",z); int chang,zhi=0,judge=1; chang=strlen(z); for(a=0;a<=chang-1;a++) { if(z[a]=='('|| z[a]=='['|| z[a]=='{'|| z[a]=='<') {temp[++zhi]=z[a];continue;} if(z[a]==')'|| z[a]==']'|| z[a]=='}'|| z[a]=='>') { if( (z[a]==')'&&temp[zhi]=='(') || (z[a]==']'&&temp[zhi]=='[') || (z[a]=='}'&&temp[zhi]=='{') || (z[a]=='>'&&temp[zhi]=='<') ) {temp[zhi]='\0';zhi--;continue;} else{judge=0;break;} } } if(zhi!=0)judge=0; if(judge==1)f[++shuzu]=1; if(judge==0)shuzu++; } for(int w=1;w<=shuzu;w++) { if(f[w]==1)cout<<"TRUE"<<endl; else cout<<"FALSE"<<endl; } }
相关文章推荐
- difference between qemu-kvm and qemu-system-x86_64
- 二叉树中和为某一值的路径
- 日期操作类(Date、Calendar、DateFomat、SimpleDateFormat类)
- 友元函数
- BufferedReader的用法
- 【LeetCode从零单刷】Ugly Number I, II & Super Ugly Number
- Android 双击返回键退出功能的实现
- UIStoryboardSegue
- POJ 3904(容斥原理)
- 二、风险和收益成正比
- 运行机制
- iOS音频录制基础
- 由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法 (转)
- ckeditor去掉按钮
- usaco月赛trapped
- 在raspberry通过PHP调用python中simplecv进行远程监控
- codeforces 584E
- 软件测试计划
- 【五校联考5day2】纪念碑
- hdu 5501