Pcau 01

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 2

Nguyễn Thanh Quang, THCS Quảng Thanh, Thủy Nguyên

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.

You might also like