DP 紀念第一次寫出來dp

2021-10-11 16:30:20 字數 1055 閱讀 2508

1154 回文串劃分

有乙個字串s,求s最少可以被劃分為多少個回文串。

例如:abbaabaa,有多種劃分方式。

a|bb|aabaa - 3 個回文串

a|bb|a|aba|a - 5 個回文串

a|b|b|a|a|b|a|a - 8 個回文串

其中第1種劃分方式的劃分數量最少。

輸入輸入字串s(s的長度<= 5000)。

輸出輸出最少的劃分數量。

輸入樣例

abbaabaa

輸出樣例

3算了,對我這種菜雞來說,很友好的了。。

狀態:dp[i]表示前i個數劃分形成的回文串的數量

狀態轉移:dp[i] = min(dp[k - 1] + 1,dp[i]);

外層迴圈:以i結尾。。

內層迴圈:如果[k , i]可以形成回文串,那麼dp[i]可以由dp[k - 1] + 1轉移過來。。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const

int maxn =

2e5+5;

char s[maxn]

;int dp[maxn]

;bool

check

(int l,

int r)

}return

true;}

intmain()

}}printf

("%d\n"

,dp[len]);

return0;

}

第一次接觸狀壓DP

另類的暴力 一般狀態數不多的時候就會開陣列,但是有的狀態並不好表示,於是,狀壓dp就產生了。狀壓dp應該是分兩類的,一類是壓縮狀態,另一類是捨棄狀態。我感覺初學狀壓dp難就難在二進位制運算的應用,了解二進位制運算子就顯得十分重要。所以我們先看下表,如果有不會二進位制簡單應用的神犇請忽略.下面就可以看...

紀念第一次寫部落格

這是我本人第一次在csdn上寫部落格,謹以此來紀念一下這一偉大的時刻 我希望我能堅持將部落格寫下去,記錄下自己的學習成長的過程。看看自己做到了什麼,給自己乙個激勵,然後繼續向著自己的理想前進。馬上就要保研了 也有可能出國 希望能進入自己的想去的學校,學自己感興趣的東西,將來能有一番作為。這個作為,我...

紀念第一次線上筆試

第一次線上筆試 第一次線上筆試,因為自學且c 年代久遠,所以考試的時候第一沒時間了,第二什麼都忘記了,浪費了不少時間,最只做出一道題,雖然非常丟人被朋友笑菜,但畢竟是值得紀念的一次,就將還記得的三道題寫在部落格上 可能我現在寫的 還是錯的,歡迎指正吶,比心 在一串字串中尋找sangfor的個數 如s...