總時間限制:1000ms記憶體限制:65536kb
描述
在某個字串(長度不超過100)中有左括號、右括號和大小寫字母;規定(與常見的算數式子一樣)任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用"$"標註,不能匹配的右括號用"?"標註.
輸入輸入包括多組資料,每組資料一行,包含乙個字串,只包含左右括號和大小寫字母,字串長度不超過100
注意:cin.getline(str,100)最多只能輸入99個字元!
輸出對每組輸出資料,輸出兩行,第一行包含原始輸入字元,第二行由"$","?"和空格組成,"$"和"?"表示與之對應的左括號和右括號不能匹配。
樣例輸入
((abcd(x)樣例輸出)(rttyy())sss)(
((abcd(x)非遞迴寫法:(用棧模擬)$$)(rttyy())sss)(
? ?$
思路:
1 #include2 #include3 #include4 #includeview code5using
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 }
遞迴寫法:
1 #include2 #include3view codeusing
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 }
擴號匹配問題
描述 在某個字串 長度不超過 100 中有左括號 右括號和大小寫字母 規定 與常見的 算術式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用 標註 不能匹配的右括號用 標註。輸入...
擴號匹配問題
總時間限制 1000ms 記憶體限制 65536kb 描述 在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹...
1203 擴號匹配問題
時間限制 1000 ms 記憶體限制 65536 kb 提交數 1424 通過數 744 在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下...