Professional Documents
Culture Documents
Pcau 01
Pcau 01
Pcau 01
CAUHOI
Câu 1. ( 3 điểm)
Cho một xâu kí tự có độ dài N không quá 5000 kí tự. Hãy tìm cách thêm vào tại vị trí bất kì
của của xâu sao cho xâu mới tạo thành là một xâu đối xứng và số kí tự thêm vào là ít nhât.
Dữ liệu vào từ File văn bản DOIXUNG.INP, dòng đầu ghi số N, dòng tiếp theo là xâu kí tự.
Kết quả ghi vào File văn bản DOIXUNG.OUT gồm chỉ 1 giá trị duy nhất là số kí tự cần
thêm vào để được xâu đối xứng.
Ví dụ:
Test 1:
DOIXUNG.INP DOIXUNG.OUT
12 7
Chuoidoixung
Test 2:
DOIXUNG.INP DOIXUNG.OUT
5 2
Huynh
DAPAN
Const MaxN=5000;fi='Doixung.inp';fo='Doixung.out';
Type
mang1=array[1..maxN]of Char;
mang2=array[1..MaxN]of Integer;
Var n:integer;s:mang1;x:mang2;
f:text;
Procedure Khoitao;
Var i:integer;
Begin
assign(f,fi);reset(F);readln(f,n);
for i:=1 to n do read(f,s[i]);
Close(f);
end;
Procedure TimXauCon;
var i,j,luu,l,k:integer;
begin
for i:=n-2 downto 1 do
begin
x[i]:=1;luu:=0;
for j:=i+1 to n do
begin
l:=x[j];
if s[i]=s[j] then x[j]:=luu+2
else
if x[j-1]>x[j] then x[j]:=x[j-1];
luu:=l;
end;
end;
end;
Procedure Xuly;
var i:integer;
begin
fillchar(x,sizeof(x),0);
if n=1 then x[n]:=1
else begin x[n-1]:=1;x[n]:=ord(s[n]=s[n-1])+1;end;
if n>2 then TimXauCon;assign(f,fo);rewrite(f);
writeln(f,n-x[n]);
close(f);
end;
BEGIN
khoitao;
xuly;
END.