合法的括號匹配序列被定義為:
1. 空串""是合法的括號序列
2. 如果"x"和"y"是合法的序列,那麼"xy"也是乙個合法的括號序列
3. 如果"x"是乙個合法的序列,那麼"[x]"也是乙個合法的括號序列
4. 每個合法的括號序列都可以由上面的規則生成
例如"", "", "", "", "[[]]"都是合法的。
牛牛現在給出乙個括號序列s,牛牛允許你執行的操作是:在s的開始和結尾處新增一定數量的左括號('[')或者右括號(']')使其變為乙個合法的括號匹配序列。牛牛希望你能求出新增最少的括號之後的合法的括號匹配序列是什麼。
輸入描述:
輸入包括乙個字串s,s的長度length(1 ≤ length ≤ 50),s中只包含'['和']'。輸出描述:
輸出乙個字串,表示括號完全匹配的序列。示例1
][
#includeusing namespace std;
string s;
int main()
}for(int i=1;i<=cnt;i++)
right+="]";
string ans = left + s + right;
cout
}
括號匹配(未完成)
寫了乙個小時,想模擬一下。結果考慮了很多地方,到最後還是有個地方無法解決,就是 只需要新增乙個 即可,但是我的卻無法判斷str i 以後的字元,因為我的只能判斷str i 以前的元素,在更新str i k 的時候,無法判斷str i 是否可以通過改變str i k 達到更優。所以必須在判斷str i...
b bd 完成括號匹配(記錄左括號數)
給出乙個括號序列s,允許你在s的開始和結尾處新增一定數量的左括號 或者右括號 使其變為乙個合法的括號匹配序列。你能求出新增最少的括號之後的合法的括號匹配序列是什麼嗎?思路 實時記錄左括號的數量l,如果遇到右括號時,若左括號數量l為0,則證明需要在當前右括號前面增加乙個左括號 def solve s ...
括號匹配(乙個已知括號組的完成)
用陣列儲存,目的是找到乙個個完整的括號組,即括號組裡面左括號,右括號相等。對每個括號組進行處理。首先遍歷一組,記錄有多少個左括號。給每個陣列元素乙個編號,是陣列下標加一。再遍歷陣列,每找到乙個右括號,就往前找乙個左括號。找到一對後,用乙個二維陣列記錄左右括號的位置。為了避免左括號重複被找,每找到一對...