文章

40

粉丝

607

获赞

68

访问

401.1k

头像
1067括号匹配(傻瓜式的匹配)
P1501 西北工业大学2015机试题
发布于2020年3月8日 13:30
阅读数 8.9k

#include
#include
#include
#include

using namespace std;

int main() {
	int n;
	cin >> n;
	for (int i = 0;i < n;i++) {
		string s;
		stack st;//每次循环重新开辟新stack不用清空
		cin>>s;
		for (int j = 0;j < s.size();j++) {//开始逐个字符匹配
			char now = s[j];
			if (st.empty()) {//如果栈空直接psuh
				st.push(now);
			}
			else {//不空看栈top元素和now元素是否匹配,匹配pop掉
				if (st.top() == '<') {
					if (now == '>') {
						st.pop();
					}
					else {//不匹配,查看now元素是否符合括号的顺序,符合push,不符合break掉
						if (now == '<') {
							st.push(now);
						}
						else {
							break;
						}
					}
				}
				else if (st.top() == '(') {
					if (now == ')') {
						st.pop();
					}
					else {
						if (now == '(' || now == '<') {
							st.push(now);
						}
						else {
							break;
						}
					}
				}
				else if (st.top() == '[') {
					if (now == ']') {
						st.pop();
					}
...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发