動態規劃 最長回文子串

2021-09-11 08:19:51 字數 785 閱讀 9283

動態規劃-最長回文子串

題目描述

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

樣例:字串"patzjujztaccbcc"的最長回文子串為"atzjujzta",長度為9。

動態規劃思想

dp[i][j]表示s[i]至s[j]所表示的子串是否是回文子串,是則為1,不是為0。這樣根據s[i]是否等於s[j],可以把轉移情況分為兩類:

若s[i] == s[j],那麼只要s[i+1]至s[j-1]是回文子串,s[i]至s[j]就是回文子串;如果s[i+1]至s[j-1]不是回文子串,則s[i]至s[j]也不是回文子串。

若s[i] != s[j],那麼s[i]至s[j]一定不是回文子串。

狀態轉移方程

邊界:dp[i][i] = 1,dp[i][i+1] = (s[i] == s[i+1]?1:0)

**如下

#include

#include

const

int maxn =

1010

;char s[maxn]

;int dp[maxn]

[maxn]

;int

main()

}}// 狀態轉移方程

for(

int l =

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

}printf

("%d\n"

,ans)

;return0;

}

動態規劃 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 本題有很多種解法,最簡單的暴力求解,但是會超時。下面分別說明動態規劃法和中心擴散法。解法一 動態規劃法...

最長回文子串 動態規劃

給出乙個字串s,求s的最長回文子串的長度。樣例輸入 patzjujztaccbcc 輸出 9 尋找二維動態規劃表示式dp i j 如果直接用dp i j 表示子符串從s i 到s j 的最長回文子串長度無法得出遞推表示式。令dp i j 表示s i 至s j 所表示的子串是否是回文子串,是則為1,不...

最長回文子串 動態規劃

vj原題 輸入乙個字串str,輸出str裡最長回文子串的長度。回文串 指aba abba cccbccc aaaa這種左右對稱的字串。串的子串 乙個串的子串指此 字元 串中連續的一部分字元構成的子 字元 串 例如 abc 這個串的子串 空串 a b c ab bc abc input 輸入str s...