複雜DP習題 括號配對

2021-10-04 18:21:29 字數 786 閱讀 5835

hecy 又接了個新任務:be 處理。

be 中有一類被稱為 gbe。

以下是 gbe 的定義:

空表示式是 gbe

如果表示式 a 是 gbe,則 [a] 與 (a) 都是 gbe

如果 a 與 b 都是 gbe,那麼 ab 是 gbe

下面給出乙個 be,求至少新增多少字元能使這個 be 成為 gbe。

注意:be 是乙個僅由(、)、[、]四種字元中的若干種構成的字串。

輸入格式

輸入僅一行,為字串 be。

輸出格式

輸出僅乙個整數,表示增加的最少字元數。

資料範圍

對於所有輸入字串,其長度小於100。

輸入樣例:

輸出樣例:

區間dp問題先列舉區間長度 ,再列舉左右 i j

#include#include#include#includeusing namespace std;

const int n = 110;

int inf = 1e8;

int f[n][n];

int n;

bool is_match(char l,char r)

int main()

cout << f[0][n - 1] << endl;

return 0;

}

括號配對 區間DP 回文子串

遞迴定義一組字元匹配模式 增加幾個字元滿足這個匹配。新增多少個字元,可以轉化為n 回文子串 這裡的回文子串需要重新定義 aaaabbbb a符合定義,b也符合定義的話 最長子串,我們列舉中間端點取最大值。abba 這種情況,我們判斷 l,r match l,r 是不是匹配,匹配的話f l 1,r 1...

括號配對問題

原文 1.括號匹配的四種可能性 左右括號配對次序不正確 右括號多於左括號 左括號多於右括號 左右括號匹配正確 2.演算法思想 1.順序掃瞄算數表示式 表現為乙個字串 當遇到三種型別的左括號時候讓該括號進棧 2.當掃瞄到某一種型別的右括號時,比較當前棧頂元素是否與之匹配,若匹配,退棧繼續判斷 3.若當...

括號配對問題

描述 現在,有一行括號序列,請你檢查這行括號是否配對。輸入 第一行輸入乙個數n 0 n 100 表示有n組測試資料。後面的n行輸入多組輸入資料,每組輸入資料都是乙個字串s s的長度小於10000,且s不是空串 測試資料組數少於5組。資料保證s中只含有 四種字元 輸出 每組輸入資料的輸出佔一行,如果該...