uva11584 劃分成回文串 線性dp

2021-07-16 04:56:01 字數 415 閱讀 3558

狀態轉移時,常常需要遍歷之前的每一種情況來看哪一種情況是最優,比如跳過哪乙個串。

判斷回文串可以從中心位置開始遍歷,預處理往往會加快時間。

#include

#include

#include

using namespace std;

const int maxn = 1000 + 5;

int n, kase, vis[maxn][maxn], p[maxn][maxn], d[maxn];

char s[maxn];

int is_palindrome(int i, int j)

int main()

printf("%d\n", d[n]);

} return0;}

Uva 11584,劃分成回文串

題意 乙個字串,將它劃分一下,使得每個串都是回文串,求最少的回文串個數。分析 d i 到第 i 個字元時的最優解 即最少劃分為幾個回文串 就有方程 d i min d j 1 其中s j 1,i 要是回文串 這樣一來,列舉就是o n 2 的複雜度,如果按照普通的判斷s j 1,i 是否是回文串,時間...

UVA11584 劃分成回文串

紫書275 題意 輸入乙個字元,最少能劃分幾個回文串 分析 預處理一下,判斷i,j是否為回文串 動態分析求解,dp i dp i 1 1,假設i單獨成為乙個回文串,然後在往前找,如果j到i是回文,dp i min dp i dp j 1 1 1 include 2 include 3 include...

UVa11584 劃分成回文串

題目描述 給乙個字串,要求把它分割成若干個子串,使得每個子串都是回文串。問最少可以分割成多少個。字串長度不超過1000。例如 racecar 本身就是回文串,答案為1 fastcar 答案為7,分成的7個回文串為 f a s t c a r aaadbccb 答案為3,分成的3個回文串為 aaa d...