pc 移动的网站开发,网站滑动效果怎么做,校园网站方案,wordpress没有评论框在算术表达式中#xff0c;除了加、减、乘、除等运算外#xff0c;往往还有括号。
包括有大括号 {}#xff0c;中括号 []#xff0c;小括号 ()#xff0c;尖括号 等。
对于每一对括号#xff0c;必须先左边括号#xff0c;然后右边括号#xff1b;如果有多个…在算术表达式中除了加、减、乘、除等运算外往往还有括号。
包括有大括号 {}中括号 []小括号 ()尖括号 等。
对于每一对括号必须先左边括号然后右边括号如果有多个括号则每种类型的左括号和右括号的个数必须相等对于多重括号的情形按运算规则从外到内的括号嵌套顺序为大括号-中括号-小括号-尖括号另外相同的括号可以嵌套。
例如{[()]},{(())},{{}} 为一个合法的表达式而 ([{}]),{([])},[{}] 都是非法的。
输入格式
第一行包含整数 n表示共有 n个表达式需要判断。
接下来 n 行每行包含一个括号表达式。
输出格式
每行输出一个表达式的判断结果。
如果合法输出 YES否则输出 NO。
数据范围
1≤n≤100 表达式长度不超过 100100。
输入样例 5
{[()]}
[()]
()[]{}
[{}]
{()} 输出样例
解释 YES
YES
YES
NO
YES #include bits/stdc.husing namespace std;unordered_mapchar, int mp{{{,1},{[,2},{(,3},{,4},{},5},{],6},{),7},{,8}};char g[110];int main()
{int n;cin n;while(n --){memset(g, 0, sizeof g);cin g;int len strlen(g);stackchar stack;for (int i len - 1; i 0; i --){if(stack.empty()) stack.push(g[i]);else if(mp[stack.top()] mp[g[i]] mp[g[i]] 4) break; else if(mp[stack.top()] - mp[g[i]] 4 ) stack.pop();else stack.push(g[i]);}if(stack.empty()) puts(YES);else puts(NO);}return 0;
}