NYOJ 2 括號配對問題

2021-06-23 05:55:03 字數 1102 閱讀 6287

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:3 描述

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

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

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

樣例輸入

3

[(])

(])([()])

樣例輸出

no

noyes

/*
題解:
括號匹配的檢驗,運用棧的思想,

由於棧只有一端生長,所以實現棧時只需要乙個陣列stack和棧頂指標(始終指向棧頂元素)

構造棧不 要想的太複雜,在此題中其實也就是乙個陣列。 

棧頂指標top的位置:

例如考慮下列括號序列:

[ ( [ ] ) ]問括號是否匹配

首先,陣列的第乙個字元是'[',顯然前面沒有與之匹配的,進棧(stack[top++]=a[i])。然後,'('、'['依次進棧。由於第4個字元,與第三個匹配(a[i]與stack[top-1]匹配),則,top--,相當於對於stack陣列,進行棧頂元素的覆蓋,依次進行...

若括號全部匹配,起始時的top應等於結束時的top。 

*/
#include#includeint main()

{ int top,i,t;

char a[10010],stack[10010];

scanf("%d",&t);

while(t--)

{ scanf("%s",a);

top=1; //top所指向b陣列下標的下一位

stack[top++]=a[0];

for(i=1; i

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 括號配對問題

描述 現在,有一行括號序列,請你檢查這行括號是否配對。輸入 第一行輸入乙個數n 0輸出 每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no 樣例輸入 3 樣例輸出 no noyes include include include include includ...