0
已解决
董子墨
中级天翼
中级天翼
以下是我RE 80的代码
#include<iostream>
#include<stack>
using namespace std;
stack<char> s;
string a;
int cnt;
int main(){
getline(cin,a);
for(int i=0;i<a.size();i++){
if(a[i]=='@')
break;
if(a[i]=='(')
s.push(a[i]);
else if(a[i]==')'){
if(s.top()!='('){
cout<<"NO";
return 0;
}
else
s.pop();
cnt++;
if(cnt>=20){
cout<<"NO";
return 0;
}
}
}
if(s.empty())
cout<<"YES";
else
cout<<"NO";
return 0;
}
求大佬们找错
0
已采纳
何冯成
中级光能
中级光能
本蒟蒻也来凑一波
本题有以下几个重点:
1.左右括号匹配(意思是除了括号,其他没什么卵用)
2.结尾有一个@做结束符。当然,你也可以cin后用strlen()判断长度。
所以,现在开始讲思路:
既然左右括号要匹配,最简单的肯定是用for循环扫一遍啦!
for(int i=0;i<strlen(c);i++){
if(c[i]=='(') a++;
if(c[i]==')') b++;
}
可是,虽然它是一道水题,可是还是有些陷阱的,例如:))a+b((@
所以,我们再加入一个判断:
for(int i=0;i<strlen(c);i++){
if(c[i]==')') b++;
if(b>a){
cout<<"NO";
return 0;
}
if(c[i]=='(') a++;
}
这样,代码的主体就完成啦!我们再判断一下左右括号的数量匹不匹配:
if(a!=b) cout<<"NO";
else cout<<"YES";
-----------------------------------------------------------------------------------------------------------
OK ,AC愉快
0
潘晨皓
高级天翼
高级天翼
0
何冯成
中级光能
中级光能
本蒟蒻也来凑一波
本题有以下几个重点:
1.左右括号匹配(意思是除了括号,其他没什么卵用)
2.结尾有一个@做结束符。当然,你也可以cin后用strlen()判断长度。
所以,现在开始讲思路:
既然左右括号要匹配,最简单的肯定是用for循环扫一遍啦!
0