dp基礎題目1 最長回文子串

2021-10-24 23:55:17 字數 762 閱讀 7987

題目:

給出乙個字串s,求s的最長回文子串的長度。
樣例

字串"patzjujztaccbcc"的最長回文子串為"atzjujzta",長度為9。
思路

dp[i]

[j] 表示第i個到第j個 是否可以構成回文序列 true表示可以 false表示不行

首先 設定邊境條件 即dp[i]

[i]=

true 並且求出序列數為2的回文序列 並標記

找出狀態轉移方程:

dp[i]

[j]=

(a[i]

==a[i+1]

&& dp[i+1]

[len+i-1]?true:flase)

;列舉回文序列長度,並更新答案ans

**

#include

#include

#include

using

namespace std;

char a[

100]

;bool dp[

100]

[100];

//dp[i][j]表示從i到j的所有序列可否構成回文序列

intmain()

}}for(

int l =

3;l<=len;l++)}

} cout

}

DP 最長回文子串

dp問題,最長回文子串 最長回文子串問題指的是在乙個字串中,是回文子串的長度的最大值.這裡的回文子串是連續的.如字串 patzjujztaccbcc 他的最長回文子串是 atzjujzta 長度為9,當然它還有其他回文子串如 ccbcc 但是長度不夠長.這類問題似乎有多種解法,複雜度從o n 3 到...

最長回文子串DP

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 分析 dpdp j i 表示從j到i的子串 若dp j i 為回文串,則dp j 1 i 1 必然回文,...

最長回文子串 dp

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 題目位址 回文的主要要求是 字串從中心對稱。例如 aba bb c 假設 對於乙個 字串 a?a 假定...