搜索
热搜: NOIP OIer 神牛
查看: 324|回复: 0

1352

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-4-22 14:11:19 | 显示全部楼层 |阅读模式
#include<bits/stdc++.h>
using namespace std;
const int N=260;
int n;
string str;
stack<int> s;
int b[N];
int main()
{
        cin>>n;
    for(int i=0;i<n;i++){
       cin>>str;//接收字符串
       while(!s.empty()) //清空栈,上次的数据若有残留。
                {
                        s.pop();
                }  

        bool fl = true;
        int jb=0;

        for(int i=0;i<str.size();i++){//入栈
            //入栈,因为都是{','[','(','<'。表明他们的顺序关系。   
            if(str[i]=='{'||str[i]=='['||str[i]=='('||str[i]=='<') {
                 if(str[i]=='{') jb=1;
                 else if(str[i]=='[') jb=2;
                 else if(str[i]=='(') jb=3;
                 else if(str[i]=='<') jb=4;
                 if(!s.empty()&&s.top()>jb) {
                     fl =false;
                     break;
                 }else{
                     s.push(jb);
                 }
             }else{
                if(str[i]=='}') jb=1;
                 else if(str[i]==']') jb =2;
                 else if(str[i]==')') jb =3;
                 else if(str[i]=='>') jb =4;
                 if(s.empty()) {
                    fl=false;
                    break;
                }else{
                     if(s.top()==jb){
                         s.pop();
                     }else{
                         fl=false;
                         break;
                     }
                 }
            }

        }


              if(!s.empty())
                          cout<<"NO\n";
                    else if(fl)
                          cout<<"YES\n";
                    else
                         cout<<"NO\n";
         }
     return 0;
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表