2705 擴號匹配問題(遞迴與非遞迴)

2021-09-21 17:21:46 字數 1756 閱讀 2636

總時間限制:1000ms記憶體限制:65536kb

描述

在某個字串(長度不超過100)中有左括號、右括號和大小寫字母;規定(與常見的算數式子一樣)任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用"$"標註,不能匹配的右括號用"?"標註.

輸入輸入包括多組資料,每組資料一行,包含乙個字串,只包含左右括號和大小寫字母,字串長度不超過100

注意:cin.getline(str,100)最多只能輸入99個字元!

輸出對每組輸出資料,輸出兩行,第一行包含原始輸入字元,第二行由"$","?"和空格組成,"$"和"?"表示與之對應的左括號和右括號不能匹配。

樣例輸入

((abcd(x)

)(rttyy())sss)(

樣例輸出

((abcd(x)

$$)(rttyy())sss)(

? ?$

非遞迴寫法:(用棧模擬)

思路:

1 #include2 #include3 #include4 #include  

5using

namespace

std; 67

intmain()824

else

if(str[i] == ')'

)2531else

//有'('相匹配

3238}39

//其他字元需許考慮,與括號無關

40else

4144 }//

for45

//若棧非空,則有沒有匹配的左括號

46while(!s.empty())

4752 mark[i] = '\0'

; 53

//輸出

54puts(str);

55puts(mark); 56}

57return

0;

58 }

view code

遞迴寫法:

1     #include2     #include3

using

namespace

std; 45

int pp(int

);

6char c[300] =

7;

8int

l;

9int

main()

10

28 i = 0

; 29

while (c[i] != 0

) 30

35 cout << c <

36}

37return

0;

38}

3940

int pp(int

pos)

41

52else

if (c[i] == ')'

) 53

58else

59

63}

64 }

view code

擴號匹配問題

描述 在某個字串 長度不超過 100 中有左括號 右括號和大小寫字母 規定 與常見的 算術式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用 標註 不能匹配的右括號用 標註。輸入...

擴號匹配問題

總時間限制 1000ms 記憶體限制 65536kb 描述 在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹...

1203 擴號匹配問題

時間限制 1000 ms 記憶體限制 65536 kb 提交數 1424 通過數 744 在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下...