歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

表達式括號匹配(stack)

題目描述

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