1. 程式人生 > >1353:表示式括號匹配(stack)

1353:表示式括號匹配(stack)

【題目描述】

假設一個表示式有英文字母(小寫)、運算子(+,—,*,/)和左右小(圓)括號構成,以“@”作為表示式的結束符。請編寫一個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回“YES”;否則返回“NO”。表示式長度小於255,左圓括號少於20個。

【輸入】

一行資料,即表示式。

【輸出】

一行,即“YES” 或“NO”。

【輸入樣例】

2*(x+y)/(1-x)@

【輸出樣例】

YES

【提示】

【樣例輸入2】

(25+x)*(a*(a+b+b)@

【樣例輸出2】

NO

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    stack<char>p;
    for(int i=0;s[i]!='@';i++)
    {
        if(s[i]=='(')
            p.push(s[i]);
        if(s[i]==')')
        {
            if(!p.empty())
            {
                p.pop();
            }
            else
            {
                cout<<"NO"<<endl;
                return 0;
            }
        }
    }
    if(p.empty()) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
    return 0;
}

相關推薦

1353表示式括號匹配(stack)

【題目描述】 假設一個表示式有英文字母(小寫)、運算子(+,—,*,/)和左右小(圓)括號構成,以“@”作為表示式的結束符。請編寫一個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回“YES”;否

1353表示式括號匹配(stack)

【題目描述】 假設一個表示式有英文字母(小寫)、運算子(+,—,*,/)和左右小(圓)括號構成,以“@”作為表示式的結束符。請編寫一個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回“YES”;否則返回“NO”。表示式長度小於255,左圓括號少於20個。 【輸入】 一行資料,即表示式。 【輸出】

棧的應用表示式括號匹配檢測(C)

問題說明: 假設數學表示式中允許包含兩種括號:圓括號“()”和方括號“[]”,巢狀順序任意。 正確的巢狀模式:( [ ] ( ) )、[ ( [ ] [ ] ) ] 正確的表示式例:(a+b)[c*(d-e)] 錯誤的巢狀模式:[ ( ] )、( ( ) ]   比如,在處理表達式(A)

C++ P1739 表示式括號匹配

先上程式碼 #include<cstdio> #include<iostream> #include<cstring> using namespace std; ch

洛谷P1739 表示式括號匹配

題目背景 我竟然開始做這種題了我這種題之前竟然沒做! 說真的 , 這道題的資料範圍沒啥用啊! 題目描述 假設一個表示式有英文字母(小寫)、運算子(+,—,*,/)和左右小(圓)括號構成,以“@”作為表

表示式括號匹配

Description 假設一個算術表示式中可以包含三種括號:圓括號“( ”和“ )”、方括號“ [ ”和“ ] ”和花括號“{”和“}”,且這三種括號可按任意的次序巢狀使用(如:…[…{…}…[…]…]…[…]…(…)…)。編寫判別給定表示式中所含括號是否正

京東筆試題2括號匹配數目

題目描述: 描述 有一個合法的字串,合法是指左括號與右括號全部能配對,現在每次將這個序列第一個左括號刪去,在將任意一個右括號刪去,每次刪去後的序列必須合法,求有多少種方法 輸入 一個合法括號序列。 輸出 方案數。 樣例輸入 (

洛谷1739表示式括號匹配

題目 假設一個表示式有英文字母(小寫)、運算子(+,—,*,/)和左右小(圓)括號構成,以“@”作為表示式的結束符。請編寫一個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回“YES”;否則返回“NO”。表示式長度小於255,左圓括號少於20個。 題

洛谷 P1739 表示式括號匹配

P1739 表示式括號匹配 題目描述 假設一個表示式有英文字母(小寫)、運算子(+,—,*,/)和左右小(圓)括號構成,以“@”作為表示式的結束符。請編寫一個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回“YES”;否則返回“NO”。表示式長度小於255,左圓括號少於20個。

表示式括號匹配-洛谷

題目連結 #include<iostream> #include<cstdio> #include<queue> using namespace std; char a[10000]; int main() { queue<int>A; int

資料結構習題——7表示式括號匹配

time_limit 3000MS memory_limit 10000KB description 假設一個算術表示式中可以包含三種括號:圓括號“(”和“)”、

P1739 表示式括號匹配

/* 題型:棧的模擬 注意:另外定義一個flag,若此時棧以空則不符合題意 */ #include<cstdio> #include<iostream> #include<stack>//庫函式 using namespace

洛谷 P1739 表達式括號匹配【STL/stack/模擬】

stack clu b+ ack 編寫一個程序 輸入輸出格式 turn 是否 algorithm 題目描述 假設一個表達式有英文字母(小寫)、運算符(+,—,*,/)和左右小(圓)括號構成,以“@”作為表達式的結束符。請編寫一個程序檢查表達式中的左右圓括號是否匹配,若匹配,

leetcode678+括號匹配stack使用掌握規

https://leetcode.com/problems/valid-parenthesis-string/description/ class Solution { public: bool checkValidString(string s) { stack&l

C語言_解決括號匹配問題和逆波蘭表示式求值為題

##1、括號匹配問題: 解決思路: void MatchBrackets (const char* str) { char* per = NULL; int i = 0; Stack s; assert (str != NULL); InitStack (&s);

資料結構實驗之棧與佇列四括號匹配(SDUT 2134)

#include <bits/stdc++.h> using namespace std; typedef long long ll; char s[100]; char a[100]; int main() { int i,j,k,f,top,len; while(

算法題括號匹配(小中大括號序列)

ack 等等 實現一個函數 har java turn 說明 [ ] lse 括號序列由( )[ ]{ }組成,不合法的括號序列由( { ) },[ } { ],等等。編程實現一個函數,檢查一個括號序列是否是合法的括號序列。 解法: 思路和“後綴表達式的求解”相似。我們借助

正則表示式括號、中括號、大括號的區別

一、小括號()、中括號[]、大括號的區別  1>. 小括號():匹配小括號內的字串,可以是一個,也可以是多個,常跟“|”(或)符號搭配使用,是多選結構的   示例1:string name = "way2014";  regex:(way|zgw)  result:結果是可以匹配

python stack 括號匹配

LeetCode 20 括號匹配 先建立一個空棧,左邊括號用left表示,右邊括號用right表示,驗證s中的字元是否與left匹配,如果是則壓入棧中,判斷是否與右邊括號匹配,如果棧不為空並且左右括號不匹配則返回False,否則匹配彈出棧中元素,如果棧中的元素不為left或者right中

案例3.2括號匹配的檢驗(c++實現/資料結構/棧的基本操作)

#include<iostream> #define MaxSize 100 #define OK 1 #define ERROR 0 using namespace std; typedef char ElemType; typedef int Status