歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 表達式括號匹配(stack)

表達式括號匹配(stack)

日期:2017/3/1 9:18:05   编辑:Linux編程

題目描述

假設一個表達式由英文字母(小寫)、運算符(+、-、*、/)和左右小(圓)括號構成,以“@”作為表達式的結束符。請編寫一個程序檢查表達式中的左右括號是否匹配,若匹配,則返回“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;
}

Copyright © Linux教程網 All Rights Reserved