COUNTPL - Đếm số Palindrome
Tác giả: flashmt
Ngôn ngữ: Pascal
uses math;
var s:string;
i,j,n:longint;
f:array[0..255] of longint;
d:array[0..255,0..255] of boolean;
begin
readln(s);
n:=length(s);
for i:=1 to n do d[i,i]:=true;
for i:=1 to n-1 do
if s[i]=s[i+1] then d[i,i+1]:=true;
for j:=3 to n do
for i:=1 to n-j+1 do
d[i,i+j-1]:=d[i+1,i+j-2] and (s[i]=s[i+j-1]);
for i:=1 to n do f[i]:=300;
for i:=1 to n do
for j:=0 to i-1 do
if d[j+1,i] then f[i]:=min(f[i],f[j]+1);
writeln(f[n]);
end.