1203 擴號匹配問題

2021-08-27 05:14:41 字數 1064 閱讀 8885

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

提交數: 1424 通過數: 744

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

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

對每組輸出資料,輸出兩行,第一行包含原始輸入字元,第二行由」",

"?"和

空格組成

,"" ,"

?"和空

格組成,

"」和」?」表示與之對應的左括號和右括號不能匹配。

((abcd(x)

)(rttyy())sss)(

((abcd(x)

$$ )(rttyy())sss)(

?               ?$

no

#include 

#include

#include

#include

using

namespace

std;

int main()

else

if(a[i]==')'&&m<=0) //前面沒有左括號的時候

else

if(a[i]==')'&&m!=0) //前面有左括號

else

}for(int i=0;i'$';

}b[l]='\0';

cout

0;}

1.這道題其實用棧的思想可以進行解決。

2.先定義乙個陣列c[m],並讓c[m]記錄下當前,左括號的下標,遇到的左括號後,讓m+1,遇到右括號就讓m-1;

3.如果m<=0時遇到了右括號,也就是前面沒有左括號能與當前右括號進行匹配,就記錄為$,如果m>0遇到了右括號,就m–,記錄為空格

4.最後如果m>0就有剩餘的左括號沒匹配,就讓此左括號=?;

1203 擴號匹配問題

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

1203 擴號匹配問題

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

擴號匹配問題

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