UVa 11584 劃分回文串 簡單dp

2021-07-22 10:09:03 字數 741 閱讀 4485

題意:

給乙個字串, 要求把它分割成若干個子串,使得每個子串都是回文串。問最少可以分割成多少個。

分析:

d[i]表示以i結尾的串最少可以分割的串數。

d[i] = min

這題還是很簡單的,不過值得學習的地方是預處理[i,j]是否為回文串那部分,**給出了兩種預處理方法。

**:

#include

#include

#include

#include

using

namespace

std;

const

int n = 1e3 + 9;

int d[n];

int f[n][n];

char s[n];

/*d[i]表示以i結尾的串最少可以分割的串數。

d[i] = min

*/void init (int n)

}void pre (int n)

}}int main() }}

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

}return0;}

/*sampleinput

3racecar

fastcar

aaadbccb

sampleoutput17

3*/

uva 11584 劃分回文串

線性dp問題 設d i 代表a 0 i 字元構成的串中劃分成回文串的最小個數 則有狀態轉移方程 d i min 可以這麼理解方程 d i 表示 0 i 範圍的最優方案,由最優子結構性質,d i 的表示也是由幾個最優項組成 d j 1.include using namespace std defin...

UVa11584 劃分回文串

判斷乙個字串能劃分成的最小回文串的個數 首先,分析問題,定義狀態 d i 為s 0 s i 的解,寫出狀態轉移方程 d i min d i 判斷條件?d j 1 inf 後面的判斷條件,就是s i s j 是否是回文串,為什麼?因為我們對於第i個字元,必然屬於從s j s i 的乙個回文串中,這是題...

uva11584 劃分回文串 簡單dp

題目大意 給乙個字串,要求把它分割成若干個子串,使得每個子串都是回文串。問最少可以分割成多少個。分析 d i 表示狀態 長度為i的字串的最少劃分回文串 d i 最大為i 1.第i個字元不能與之前的字元形成回文串,d i d i 1 1 2.如果可以,j i 是回文串 d i d j 1 1 如果有多...