专栏文章

405J1R训练四(T628215 括号匹配问题)

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioyaivo
此快照首次捕获于
2025/12/03 03:07
3 个月前
此快照最后确认于
2025/12/03 03:07
3 个月前
查看原文

正确思路

先定个stacks;再来个int b=0,c=0;再来个char a[300];然后来个while循环:
CPP
while(a[b]!='@'){
	b++; 
	cin>>a[b]; 
	if(a[b]=='(') {
		s.push(a[b]) ; 
		c++; 
	}
	if(a[b]==')' && c!=0){
		s.pop(); 
		c--; 
	}else if(a[b]==')' && c==0){
		cout<<"NO";
		return 0;
	}
} 
最后来个特判:
CPP
if(c==0){
	cout<<"YES";
}else{
	cout<<"NO";
}

正确代码

CPP
#include<bits/stdc++.h>
using namespace std ; 
stack<int>s; 
int b=0,c=0;
char a[300];  
int main(){
	while(a[b]!='@'){
		b++; 
		cin>>a[b]; 
		if(a[b]=='(') {
			s.push(a[b]) ; 
			c++; 
		}
		if(a[b]==')' && c!=0){
			s.pop(); 
			c--; 
		}else if(a[b]==')' && c==0){
			cout<<"NO";
			return 0;
		}
	} 
	if(c==0){
		cout<<"YES";
	}else{
		cout<<"NO";
	}
	return 0 ; 
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...