Pascal

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

Cho một xâu chữ số.

Chèn vào dấu cách sao cho tạo thành một dãy số tăng có nhiều số nhất.

Ví dụ '123214' ---> 1 2 3 214.


var s,ss,l:string;
i,j,k:Real;
function tach(s:string):string;
begin
    l := '';
    j := 0;
    //Tach chuoi con 
    while j<=i do 
    begin 
        l := l+s[1];
        delete(s,1,1);
        val(l,j)
    end;
    //So sanh chuoi con voi chuoi cu va chuoi con lai
    val(s,k);
    if ((j>=i) and (j<=k)) then
    begin
        ss := ss+#32+l;
        i := j;
    end
else 
    begin
        ss := ss+#32+l+s;
        exit(ss);
    end;
    //Tiep tuc tach chuoi
    if length(s)<>0 then
        tach(s);
    exit(ss);
end;
begin
    readln(s);
    //s := '123321';
    ss := '';
    i  := 0;
    write(tach(s));
    readln();
end.