Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Cho chuỗi các chữ số liên tếp.
Xóa n số (input) bất kỳ trong chuỗi sao cho được chuỗi có giá trị nhỏ nhất.

Ví dụ: Cho chuỗi số 

15132334312122345

Với số lượng số cần xóa (n=3)

// Lan 1- > 1132334312122345
// Lan 2 -> 112334312122345
// Lan 3 -> 11233312122345 => kết quả đạt được

var s:string;
i:byte;

function Tim_min(s:string):string;
var 
max:char;
j:byte;
begin
    max := s[1];
    for j := 2 to length(s) do 
    begin
        if(s[j] >= max) then max := s[j]
    else begin delete(s,j-1,1); break; end;
    end;
    writeln(s);
    exit(s);
end;

begin
    s := '15132334312122345';
    s := s + '0';
    for i := 1 to 3 do 
    begin
        writeln('Lan ',i);
        s := tim_Min(s);
    end;
    writeln;
    s := copy(s,1,length(s)-1);
    write(s);
    readln;
end.