NYOJ 2 括號配對問題

2021-06-26 05:34:37 字數 1060 閱讀 5424

描述

現在,有一行括號序列,請你檢查這行括號是否配對。 輸入

第一行輸入乙個數n(0輸出

每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no

樣例輸入

3

[(])

(])([()])

樣例輸出

no

noyes

**:

#include#include#include#include#includeusing namespace std;

struct sstack

;void initstack(sstack &s)//構造乙個空棧s

int emptystack(sstack &s)//判斷是否為空棧

int pushstack(sstack &s, char c)//插入元素c為新的棧頂元素

int popstack(sstack &s)//刪除s的棧頂元素

char topstack(sstack &s)//返回s的棧頂元素

int main()

else if(str[i] == ']')

}//字串迴圈掃瞄結束時,若堆疊非空(即堆疊尚有某種型別的左括號),則說明左括號多於右括號,匹配失敗;

//正常結束則括號匹配正確。

if(!emptystack(s))

flag = 0;

if(flag)

printf("yes\n");

else

printf("no\n");

} return 0;

}

題意解析:判斷括號是否匹配的問題,如果當前的左括號和當前的右括號匹配就ok。需要用棧來解決,對棧的插入和刪除操作,都是在棧頂進行的,所以只需要棧頂指標即可。特別的棧是按照後進先出的原則進行修改的。

括號匹配共有四種可能的情況:

a.左右括號配對次序不正確

b.右括號多於左括號

c.左括號多於右括號

d.左右括號匹配正確

依次考慮。。。

NYOJ 2 括號配對問題

第一次用棧來寫的 早上隊長講了一下,了解了下基礎,覺得c 的棧可以直接呼叫,c的棧卻要自己定義,還是該花時間好好看c 這是用c寫的 includestruct stack void initstack stack a 構造乙個空棧 void push stack a,char item 往棧裡面插入...

NYOJ 2 括號配對問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現在,有一行括號序列,請你檢查這行括號是否配對。輸入第一行輸入乙個數n 0輸出 每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no 樣例輸入 3 樣例輸出 no noyesv.back ...

NYOJ 2 括號配對問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現在,有一行括號序列,請你檢查這行括號是否配對。輸入第一行輸入乙個數n 0輸出 每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no 樣例輸入 3 樣例輸出 no noyes 題解 括號匹...