7 3 括號匹配調整

2021-10-22 23:54:27 字數 819 閱讀 1134

如果通過插入「 +」和「 1」可以從中得到格式正確的數學表示式,則將帶括號的序列稱為正確的。

例如,序列 「(())()」,"()「和 「(()(()))「是正確的,而」)(」,」(()))(「和」(()" 不是。

定義重新排序操作:選擇括號序列的任意連續子段(子字串),然後以任意方式對其中的所有字元進行重新排序。

當重新排序的子段的長度為t時,重新排序操作需要耗時t秒。

例如,對於「))((」,他可以選擇子字串「)(」並重新排序「)()(」(此操作將花費2秒)。

不難看出,重新排序操作不會改變左括號和右括號的數量。

現在,ld想花費最少的時間,通過任意次數(可能為零)執行重新排序操作來使括號序列變成正確的。

輸入格式:

第一行包含乙個整數n(1≤n≤1e6),表示序列的長度;

第二行包含乙個長度為n的字串,僅由字元『(』和『)』組成。

輸出格式:

輸出乙個整數,表示使括號序列正確的最小秒數;如果不可能實現,則輸出-1。

輸入樣例:

8))((())(

輸出樣例:

#include

using

namespace std;

intmain()

else

if(b==

0&&a==0)

}else

else}if

(b>

0) flag++;}

if(a>

0||b>

0) cout<<-1

;else cout

}

PTA7 3 括號匹配 25 分

給定一串字元,不超過100個字元,可能包括括號 數字 字母 標點符號 空格,程式設計檢查這一串字元中的 是否匹配。輸入在一行中給出一行字串,不超過100個字元,可能包括括號 數字 字母 標點符號 空格。如果括號配對,輸出yes,否則輸出no。sin 10 20yes no解題思路 這個題首先要清楚括...

列印匹配括號

開始抽空做一些演算法題,留下記錄作為菜鳥的成長見證吧。這道題來自於cracking the coding interview,要求列印n對括號的所有可能匹配。我採用遞迴來做,這樣編寫比較方便而且容易弄懂,但用迭代應該會效率快不少而且遞迴一定能轉換成迭代吧,以後有空研究下 如下 include std...

括號匹配(二)

時間限制 1000 ms 記憶體限制 65535 kb 難度 6 描述 給你乙個字串,裡面只包含 四種符號,請問你需要至少新增多少個括號才能使這些括號匹配起來。如 是匹配的 是匹配的 是不匹配的 是不匹配的 輸入第一行輸入乙個正整數n,表示測試資料組數 n 10 每組測試資料都只有一行,是乙個字串s...