uva 11584 劃分回文串

2021-08-14 20:17:43 字數 621 閱讀 9693

線性dp問題

設d【i】代表a【0:i】字元構成的串中劃分成回文串的最小個數

則有狀態轉移方程:d【i】=min

可以這麼理解方程:d【i】表示【0:i】範圍的最優方案,由最優子結構性質,d【i】的表示也是由幾個最優項組成:d【j】,1.

#include

using

namespace

std;

#define maxl 1000+10

#define inf 100000

int s[maxl][maxl];

int d[maxl];

char a[maxl];

int len=0;

bool judge(char* a,int n)//判斷從a開始的n個字元構成的串是不是回文串

return

true;

}void initial()}}

void fun()

}d[i]=min;

}printf("%d\n",d[len-1]);

}int main()

initial();

fun();

}

}

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 的乙個回文串中,這是題...

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...