POJ 2955 括號匹配,區間DP

2021-09-06 11:24:56 字數 738 閱讀 5458

題意:給你一些括號,問匹配規則成立的括號的個數。

思路:這題lrj的黑書上有,不過他求的是新增最少的括號數,是的這些括號的匹配全部成立。

我想了下,其實這兩個問題是一樣的,我們可以先求出括號要匹配的最少數量,那麼設原來括號的數量為l , 新增了l' 。

那麼其實原來括號匹配成功的括號數就是((l + l') / 2 - l') * 2。

#define n 105

char a[n] ;

int dp[n][n] ;

int f[n][n] ;

int check(int i ,int j)

void init()

int main()

for (int i = 1 ; i <= l ; i ++ ) }}

cout << ((l + dp[0][l - 1]) / 2 - dp[0][l - 1]) * 2 << endl;

}return 0 ;

}

當然,按照思路來寫應該是這樣的區間dp。

#define n 105

int dp[n][n] ;

char a[n] ;

bool check(int i ,int j)

int main() }}

cout << dp[0][l - 1] << endl;

}return 0 ;

}

poj2955 括號匹配,區間dp

題目大意 給乙個由,組成的字串,其中 可以匹配,求最大匹配數 題解 區間dp dp i j 表示區間 i,j 中的最大匹配數 初始狀態 dp i i 1 i,i 1可以匹配 2 0 狀態轉移見 include include include include include include using...

poj2955(括號匹配DP)

題意 給乙個由 四種字元任意排列組成的字串,求最長合法的不連續字串的長度。思路 dp的時候有點倍增的意思,算出來以每個位置開始任意長度內的答案。倍增著算,注意計算一段的時候先判斷兩頭是否可以匹配,然後再列舉分界點來繼續鬆弛。關鍵給的字串不超過100,資料太弱了 n 3 的複雜度。include in...

括號匹配(POJ2955)題解

題目大意 給出一串括號,求其中的最大匹配數。我這麼一說題目大意估計很多人就蒙了,其實我看到最開始的時候也是很蒙的。這裡就來解釋一下題意。這道題讓求的是最大常規匹配數,什麼是常規匹配呢?都是常規序列。翻譯一下題目的英文 我們給出了 常規括號 序列的以下歸納定義 樣例輸入 end樣例輸出 664 06現...