UVA 673 (括號的匹配)

2022-06-27 16:18:10 字數 1314 閱讀 6464

有兩種方法:

第一種:陣列

思想:觀察可匹配成功的字串可知:

找到第乙個i為出括號(')',']')那麼與它相匹配的進括號一定是在它左邊i-1(最近的)

如果不是第乙個出括號,與它相匹配的進括號一定是在它左邊距離t對已匹配的括號(假設兩者相隔t對已匹配的括號)可把已匹配的括號值設為0,那麼只需找到第乙個不為0的數是否與出括號匹配,如果不匹配說明該字串不匹配)

1 #include2 #include3 #include4 #include5 #include

6 #include7

using

namespace

std;

8int

main()932

if(x1!=x2||x3!=x4)//

說明括號數量不匹配

33 flagh=1;34

//for(int i=0;i35

//cout<36

for(int i=0;i)

3750

break;51

}52}53

if(flag==0)//

說明不符合

5458

else

//說明符合 把匹配的括號設為0

5963}64

}65for(int i=0;i//

檢查是否存在沒匹配的字元(即不為0的數)

6672}73

//cout<74

//for(int i=0;i75

//cout<76

if(flagh==1

)77 cout<<"no"

<78else

79 cout<<"

yes"

<81//

82//

fclose(stdin);

83//

fclose(stdout);

84 }

第二種:棧

1)棧的思想

#include#include

intmain()

}else

if(c[i]==']'

)

}//else//}

if(flag==1|| j!=0

) printf(

"no\n");

else

printf(

"yes\n");

}return0;

}

uva673 棧 括號匹配

輸入一些由小括號和中括號組成的字串,判斷字串是否正確。棧的基本應用,水題。自己比較得意的是如何判斷是否匹配。方法是 little middle 判斷當前字元和棧頂字元相加是否等於little 或middle include include include const int little const...

UVA 673 括號匹配 棧

如果是乙個合法的序列,每對配對的括號的兩個字元 和 或者 和 一定是相鄰的,每次判斷下該字元是否有配對即可。如果配對,將左括號出棧即可。特別注意 空格也是合法的。ac include includeusing namespace std const int maxn 200 char str max...

uva 673 平衡的括號

這道題目要求判斷括號是否平衡。由於是判斷就很簡單了,利用stl裡面的stack棧,遇到 或者 就入棧,遇到 或 就比較出棧。注意下可能輸入空字元 include include include include include include define maxn 200 using namespa...