描述
現在,有一行括號序列,請你檢查這行括號是否配對。 輸入
第一行輸入乙個數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 題解 括號匹...