Nhập một số nguyên và số k , xoá đi k chữ số trong số nguyên đó sao cho số còn lại có giá trị bé nhất
2 câu trả lời
nhập 1 số
gán số đó vào 1 biến a
chạy vòng lặp
{
lấy số a đó % cho 10 và gán vào biến 1
lấy số a chia cho 10, gán cho a
lấy số a đó % cho 10 và gán vào biến 2
lấy số a chia cho 10, gán cho a
so sánh biến 2 và biến 1 kiểm tra biến nào lớn hơn thì gán vào biến số 3
}
cứ thế cho hết vòng lặp.
Ngoài ra có thể chỉ cần dùng 1 biến a hoặc 1 biến a và 1 biến tạm nếu b biết linh hoạt sử dụng, cách trên dùng 4 biến cho đơn giản.
Ý TƯỞNG:
while (dem<k) do:
-Kiểm tra xem 2 số liền kề nhau số nào lớn hơn thì xóa bỏ
-nếu kiểm tra đến hết xâu mà không có cặp số nào như trên thì xóa cuối cùng
uses crt;
var n,tam : string;
i,j,k,dem : integer;
ktra : boolean;
BEGIN
clrscr;
write('Nhap N: ');
readln(n);
write('Nhap K: ');
readln(k);
dem := 0;
ktra := false;
while (dem<k) do
Begin
ktra := false;
for i := 1 to length(n)-1 do
begin
while (n[i]>n[i+1]) do
begin
delete(n,i,1);
inc(dem);
ktra := true;
if (dem>=k) then break;
end;
end;
if (ktra=false) then
begin
inc(dem);
delete(n,length(n),1);
end;
End;
writeln(n);
readln;
END.