如果乙個括號序列中的每乙個左括號都有乙個右括號與之完成配對,這個序列就是乙個合法的括號匹配序列。
例如:「((())),()()()」是合法的括號匹配序列,
「(((())()((()」是不合法的括號匹配序列。
牛牛得到了一系列的括號序列,牛牛要從這個系列中任意選取兩個位置進行一次交換操作,僅且只能進行一次操作。牛牛想知道能否通過這次操作,把這個系列變成合法的括號匹配序列。
輸入描述:
輸入第一行包括測試樣例數t(1<=t<=1000);
接下來t行,每行乙個括號序列s(1<=length(s)<=100000),表示每個括號序列。
輸出描述:
如果可以通過一次交換變成合法的括號匹配序列,則輸出「yes」,否則輸出「no」
輸入示例:
2())(
)))(((
輸出示例:
yesno
**如下:
#include
#include
#include
using namespace std;
const
int maxn =
100000
;char str[maxn]
;stack<
char
>s;
intmain()
}int i =0;
int flag =0;
for(i =
0; i < n;
++i)
else
else}}
if(i == n)
else
}else
}return0;
}
程式練習 括號匹配
1 include2 include3 include45 define max 2067 8 typedef struct stackstack 1213 char gettop s stack h 得到棧頂元素 1421 22 stack out s stack h 出棧23 3637 stac...
演算法基礎練習 最長括號匹配
最長括號匹配 輸入的字串只包含左括號,右括號 1.起始匹配的位置start 1,匹配的最長長度ml 0 2.遍歷第i個字元c 3.如果c是左括號,壓棧 4.如果c是右括號,則與棧頂元素進行匹配 4.1 如果棧為空,則此時的c無法匹配,更新start i,為下一次匹配做準備 4.2 如果棧非空,則出棧...
括號匹配的檢驗
一 題目 假設表示式中可以允許包含三種括號 圓括號 和 方括號 和 和花括號 且這三種括號可按任意的次序巢狀使用。即 或者 等為正確格式,或者均為不正確的格式。編寫判別給定表示式中所含括號是否正確配對出現的演算法。二 思路 檢驗括號是否匹配的方法可以用 期待的急迫程度 這個概念來描述。例如,考慮下列...