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