練習9 牛牛的括號匹配

2021-09-02 18:46:08 字數 857 閱讀 3582

如果乙個括號序列中的每乙個左括號都有乙個右括號與之完成配對,這個序列就是乙個合法的括號匹配序列。

例如:「((())),()()()」是合法的括號匹配序列,

「(((())()((()」是不合法的括號匹配序列。

牛牛得到了一系列的括號序列,牛牛要從這個系列中任意選取兩個位置進行一次交換操作,僅且只能進行一次操作。牛牛想知道能否通過這次操作,把這個系列變成合法的括號匹配序列。

輸入描述:

輸入第一行包括測試樣例數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 如果棧非空,則出棧...

括號匹配的檢驗

一 題目 假設表示式中可以允許包含三種括號 圓括號 和 方括號 和 和花括號 且這三種括號可按任意的次序巢狀使用。即 或者 等為正確格式,或者均為不正確的格式。編寫判別給定表示式中所含括號是否正確配對出現的演算法。二 思路 檢驗括號是否匹配的方法可以用 期待的急迫程度 這個概念來描述。例如,考慮下列...