動態規劃-最長回文子串
題目描述
給出乙個字串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...