竞赛
考级
法兰西玫瑰
SJZ
思路: 题目要求判断一个表达式的前后括号是否匹配。 1. 设置栈,记录前括号的数量 2. 将表达式的每个字符依序输入直到输入的为@退出 3. 如果输入的是(则入栈 4. 如果输入的是),栈为空说明没有前括号,不匹配,直接输出NO,否则出栈 5. 直到输入结束,如果栈为空说明表达式匹配,否则不匹配 代码:
被大佬们暴打的CK七星松
代码呈现 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 思路分析 输入字符串,遍历 如果它是左括号,进栈 如果它是右括号: 1.栈头为左括号,左括号出栈 2.栈头没有(栈空了),标志变量增加,退出循环 3.栈头不是左括号,标志变量增加,退出循环 遍历结束后,如果栈还有(即括号还未配对完),标志变量增加 如果标志变量为0,输出YES,否则输出NO
沈思邈(努力冲638)
嘎了
题解如下 欢迎加入团队
唱跳坤
嫌疑を避ける ~~
yy
直接暴力
亚洲卷王
#include<iostream> using namespace std; int main(){ string a; int i = 0,top = 0,tmp = 0; cin >> a; while(a[i] != '@'){ if(a[i] == '(')top++; if(a[i] == ')')top--; if(top < 0)tmp = 1; i++; } if(top != 0)tmp = 1; if(tmp == 0)cout << "YES"; else cout << "NO"; return 0; }
胡梓谦
#include <bits/stdc++.h> using namespace std; stack<char> s; int main(){ char a; bool q=true,h=true; while(cin>>a) { s.push(a); if(a=='(') { if(qtrue) q=false,h=true; else { cout<<"NO"<<endl; return 0; } } else if(a')') { if(htrue) h=false,q=true; else { cout<<"NO"<<endl; return 0; } } } if(hfalse&&q==true) cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0; }
Voldemort
远在天边的浪子
#include<bits/stdc++.h> using namespace std; int main(){ string s; cin>>s; int n=0; for(int i=0;i<s.size();i){ if(s[i]=='(') n; if(s[i]')'){ if(n) n--; else{ cout<<"NO"; return 0; } } } if(n0) cout<<"YES"; else cout<<"NO"; }
一只有梦想的咸鱼
星舰
Alex
Zด้้้้้็้้้้้้้็
+孟恕行+_福山证大外国语小学
哦。
检查输入的表达式中的左右圆括号是否匹配。
AC君
共24条