Cho xâu S gồm các kí tự chữ cái thường và chữ số hãy cho biết cần xóa đi ít nhất bao nhiêu kí tự để thu đc 1 dãy đối xứng

2 câu trả lời

Bạn tự làm đi ạ

const fi=’palind.inp’;
      fo=’palind.out’;
var s: ansistring;
    max,l,r,n,li,lj: longint;
procedure nhap;
begin
    assign(input,fi);
    reset(input);
    readln(s);
    close(input);
end;
function check(l,r:longint):boolean;
var c:longint;
begin
        for c:=1 to (r-l+1) div 2 do
                        if s[l+c-1]<>s[r-c+1] then exit(false);
                exit(true);
end;
procedure xuat;
var i,j: longint;
begin
    assign(output,fo);
    rewrite(output);
    max:=0;
    n:=length(s);
    for i:=1 to n do
        for j:=n downto i do
        begin
                if j-i+1 < max then break;
                        if check(i,j) then
                                begin
                                        if j-i+1 > max then
                                                begin
                                                        max:=j-i+1;
                                                        li:=i;
                                                        lj:=j;
                                                end;
                                        break;
                                end;
        end;
        for i:=li to lj do
        write(s[i]) ;
        close(output);
end;

begin
  nhap;
  xuat;
end.

Câu hỏi trong lớp Xem thêm