文章

37

粉丝

168

获赞

13

访问

285.2k

头像
P1067 解题思路分享
P1067 中山大学2019年机试题
发布于2021年3月16日 14:02
阅读数 7.1k

#include <bits/stdc++.h>
using namespace std;
int main()
{
	map<char,int> m;
	m['<']=0,m['(']=1,m['[']=2,m['{']=3;
	int n;
	cin>>n;
	while(n--){
		char s[260];
		cin>>s;
		stack<char> st;
		for(int i=0; i<strlen(s); i++){
			if(!st.empty()){
				char c=st.top();
				if(m[c]<m[s[i]]) break;
				if(c=='<'&&s[i]=='>' || c=='('&&s[i]==')' || c=='['&&s[i]==']' ||c=='{'&&s[i]=='}')
					st.pop();
				else st.push(s[i]);
			}else st.push(s[i]);
		}
		if(st.empty()) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发