題意:
給乙個字串, 要求把它分割成若干個子串,使得每個子串都是回文串。問最少可以分割成多少個。分析:
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 如果有多...