Serendipity丶


私信TA

用户名:uq_38590416266

访问量:2433

签 名:

别人的屋檐再大,不如自己手中有伞

等  级
排  名 64
经  验 10627
参赛次数 0
文章发表 33
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

唯有提高自己的核心竞争能力,才可在逆流中不断前进。

解题思路:
将字符用数字来代替
注意事项:

参考代码:

#include<bits/stdc++.h>

using namespace std;

//定义字符数组 和 数字数组 

// 数字的优先级为0,1,2,3,4.......从小到大 

char a[]={'{','[','(','<','}',']',')','>'};

int b[266];

int main()

{

int n;

cin >> n; 

while(n--)

{

//这东西记得在while循环里面写 

int flag = 1;//标记 

string s;

stack<int>q;

cin >> s;

for(int i = 0 ; i < s.size() ;i++)

{

//分别与字符数组对比 如果成功 则将相应的数字存放到数字数组里面 

for(int j = 0 ; j < 8 ;j++)

{

if(s[i] == a[j])

{

b[i] = j;

break;

}

}

}

for(int i = 0 ; i < s.size() ;i++)

{

// <= 3 这个是让前四个 即左半边的能够进入下一步 

if(b[i] <= 3)

{

// 下面是 如果栈为空 或者前面的数字比后面的小于或者等于 

if(q.empty() || q.top() <= b[i]) q.push(b[i]);

// 如果该栈不为空 并且后面呢个比前面这个小 

//则不满足大括号包含小括号的规则 标记 退出循环 

else

{

flag = 0;

break;

}

}

else 

{

// 这个为后四个字符 及括号的右半边 

// b[i] - 4 这个判断是否和栈顶元素匹配 

// 不匹配则退出循环 否则栈顶元素出栈                      

if(!q.empty() && b[i] - 4 == q.top())

q.pop();

else 

{

flag = 0;

break;

}

}

}

//就是一些简单的判断条件 

if(!q.empty()) cout << "NO" << endl;

else if(flag) cout << "YES" << endl;

else cout << "NO" << endl;

return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »