用動態規劃方法去解決最長回文問題(python)

2021-09-09 06:24:50 字數 809 閱讀 9821

首先把**貼上來鎮樓,然後慢慢講這個思路。從下面得到的思路,動態規劃的問題最主要的就是轉移方程與狀態方程的建立。

思考:當字串從i到j處是回文,那麼從i+1 到j-1處也一定是回文,就這樣一直回溯 ,直到i=j ,設定為1,換成我自己的狀態方程就是當x = y時,target[i,j] = 1,其他的時候為0 ,然後轉移方程是當s1[i] = s1[j] 時,target[i,j] = target[i+1,j-1] + 2。

程式設計時遇到的問題就是index溢位問題,這個要仔細思考如何去設定,同時,x需要從大到小遍歷,而不是常規的從小到大,因為資料是以對角線交叉傳播的。

其實我們在這裡還是有錯誤,錯誤在哪呢,就是該程式無法解決比如『qweew』這樣字串的測試,因為該回文是偶數,這樣如何解決呢?需要加幾句話。

多加個if,當s1[i] = s1[i-1]且i>0時,target[i-1,i]為2,因為此刻比如qweew,i = 3 ,j -1 = 2,此時是回文,不過是2,所以target[2,3] = 2,表示字串的index從2到3處的字串是回文。

最長回文串 動態規劃)

半對 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 思路一 翻轉字串法。1.將整個字串反轉,然後判斷原始的字串是否在反轉的字串 現。2.只是出現還不...

用「動態規劃」解決最長滑雪道問題

題目大意 給你乙個矩陣,當做滑雪場,矩陣的每個單元中的數代表高度,滑雪者只能從高的滑到低的地方,且方向只能是上,下,左和右,問滑雪者最長能滑幾個單元?解題思路 該題本質上就是求矩陣上的最長嚴格連續遞減 或遞增 序列,即序列中的元素不能相等,而且前後之間必須相鄰。該題屬於動態規劃問題,要用到遞迴。已找...

動態規劃 最長回文子串行

之前並沒有想過求解 最長回文子串行 的方法,但是自己想想也是沒有什麼好的辦法可以求出 最長回文子串行 來,而最近遇到了一道題目,在經過問題分析,轉化之後,其根本的問題就是 最長回文子串行 的求解問題。題意 兩隻兔子在乙個由n個數字組成的環上,乙隻只能順時針跳,另乙隻只能逆時針跳。跳的規則如下 1 以...