題目描述
假設一個表達式由英文字母(小寫)、運算符(+、-、*、/)和左右小(圓)括號構成,以“@”作為表達式的結束符。請編寫一個程序檢查表達式中的左右括號是否匹配,若匹配,則返回“YES”;否則返回“NO”。表達式長度小於255,左圓括號少於20個。
輸入輸出格式
輸入格式:
輸入文件stack.in包括一行數據,即表達式。
輸出格式:
輸出文件stack.out包括一行,即“YES”或“NO”。
輸入輸出樣例
輸入樣例#1:
stack.in
2*(x+y)/(1-x)@
輸入樣例#2:
stack.in
(25+x)*(a*(a+b+b)@
輸出樣例#1:
stak.out
YES
輸出樣例#2:
stak.out
NO
思路
遇到“(”,k++;遇到“)”,k--。如果最後k=0,輸出YES,反之,輸出NO。
代碼
#include<stdio.h>
#include<string.h>
char a[260];
int main()
{
int i=0,k=0,len;
gets(a);
len=strlen(a)-1;
for(i=0;i<=len;i++)
{
if(a[i]=='(')
k++;
if(a[i]==')')
k--;
}
if(k==0)
printf("YES");
else
printf("NO");
return 0;
}