文章

9

粉丝

126

获赞

11

访问

52.0k

头像
括号匹配问题(注意多组输入,栈内清空)
P1067 中山大学2019年机试题
发布于2022年3月6日 13:12
阅读数 6.7k

新手

#include <iostream> 
using namespace std;
#include <string.h>
#include <stack>

char s[260];

stack <char> st;

int main ()
{
	int n;
	scanf ("%d", &n);
	for (int j = 0; j < n; j++)
	{
		int flag = 0;//标记
		scanf ("%s", s);
		int len = strlen(s);
		for (int i = 0; i < len; i++)
		{
			if (!st.empty() ) 
			{
				char now = st.top() ;
				if (   now == '<' && s[i] != '<' && s[i] != '>'
					|| now == '(' && s[i] != '(' && s[i] != ')' && s[i] != '<' && s[i] != '>' 
					|| now == '[' && (s[i] == '{' || s[i] == '}'))//优先级问题
				{
					flag = 1;//当优先级顺序出现问题时,标记为1,输出NO
					break;
				}
				else if (now == '(' && s[i] == ')' || now == '[' && s[i] == ']' 
                      || now == '{' && s[i] == '}' || now == '<' && s[i] == '>')//匹配问题
					st.pop() ;	
				else st.push(s[i]) ;
			}
			else st.push(s[i...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发