南通住房和城乡建设局网站,wordpress exif,网站建设产品经理职责,常见的静态网页作者 刘昆
单位 中国矿业大学徐海学院
字符串中只含有括号 (),[],,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式#xff0c;从内到外必须是,(),[],{}#xff0c;例如。输入: [()] 输出 YES#xff0c;而输入([])#xff0c;([)]都应该输…
作者 刘昆
单位 中国矿业大学徐海学院
字符串中只含有括号 (),[],,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式从内到外必须是,(),[],{}例如。输入: [()] 输出 YES而输入([])([)]都应该输出 NO。
输入格式:
第一行为一个整数 n表示以下有多少个由括号组成的字符串。接下来的 n 行每行都是一个由括号组成的长度不超过 255 的字符串。
输出格式:
输出有 n 行每行都是 YES 或 NO。
输入样例:
在这里给出一组输入。例如
5
{}{}()()[][]
{{}}{{}}(())(())[[]][[]]
{{}}{{}}(())(())[[]][[]]
{}{[]}(())(())[[()]][[]]
}{{[]}(())(())[[()]][[]]输出样例:
在这里给出相应的输出。例如
YES
YES
YES
YES
NO
#includeiostream
#includeunordered_map
#includestring.h
using namespace std;
const int N300;
char stk[N];
int tt0;
int main()
{int n;cin n;unordered_mapchar,int pr{{,1},{(,2},{[,3},{{,4}};while(n--){tt0;char op[N];cin op;int m;char x;mstrlen(op);int i;bool flag true;for(i0;im;i){if(op[i]{ || op[i] || op[i][ || op[i](){stk[tt]op[i];int j;for(jtt;j0;j--){if(pr[stk[tt]] pr[stk[j]]){cout NO endl;flag false;break;}}if(flag false)break;}else if(op[i]}){xstk[tt];tt--;if(x ! {){cout NO endl;flag false;break;}}else if(op[i]]){xstk[tt];tt--;if(x![){cout NO endl;flag false;break;}}else if(op[i])){xstk[tt];tt--;if(x!(){cout NO endl;flag false;break;}}else{xstk[tt];tt--;if(x!){cout NO endl;flag false;break;}}}if(flag){if(tt 0){cout NO endl;}if(tt 0){cout YES endl;}}}return 0;
} 注意
1.在for前面加一个变量判断如果输出NO才进行第二个break,不然的话都会走第二个break.
2.应该把flag放在for前面中间输出NO然后break跳出for循环但是for循环下面还有代码会继续执行如果不满足条件可能还会输出No。