P1739 表達式括號匹配
網站鏈接;https://www.luogu.com.cn/problem/P1739
假設一個表達式有英文字母(小寫)、運算符(+,—,*,/)和左右小(圓)括號構成,以“@”作為表達式的結束符。請編寫一個程序檢查表達式中的左右圓括號是否匹配,若匹配,則返回“YES”;否則返回“NO”。表達式長度小於255,左圓括號少於20個。
輸入格式
一行:表達式
輸出格式
一行:“YES” 或“NO”
輸入輸出樣例
輸入 #1
2*(x+y)/(1-x)@
輸出 #1
YES
輸入 #2
(25+x)*(a*(a+b+b)@
輸出 #2
NO
說明/提示
表達式長度小於255,左圓括號少於20個
AC代碼1:

#pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;} typedef unsigned long long ll; const int maxn = 1e6+10; char a[300]; int main() { scanf("%s",a); int t=strlen(a); int j=0; int flag=0; for(int i=0;i<t;i++){ if(a[i]=='('){ j++; } else if(a[i]==')'){ j--; } if(j<0){ flag=1; break; } } if(flag==1||j!=0){ printf("NO\n"); } else{ printf("YES\n"); } return 0; }
AC代碼2: