free pascal 基础题。删数问题
发布网友
发布时间:2022-06-09 13:07
我来回答
共3个回答
热心网友
时间:2023-10-02 14:19
考虑相邻两位
....AB.....
删除A后:....B..... ---1#
删除B后:....A..... ---2#
所以如果A<B
则2#小,1#大
那么我们可以得出结论
如果要使所剩整数最小,那么我们应该删除从左到右满足(t[i]>t[i+1])的2个数i
如果要使所剩整数最大,那么我们应该删除从左到右满足(t[i]<t[i+1])的2个数i
对于样例 12301
所剩整数最小:
1<2不满足
2<3不满足
3>0满足,删去
变成1201
2>0满足,删去
变成101,结束
热心网友
时间:2023-10-02 14:19
类似于这种问题可以用贪心法做
热心网友
时间:2023-10-02 14:20
var s,i:longint; n:string;
begin
readln(n);
readln(s);
while s>0 do
begin
i:=1;
while(i<length(n))and(n[i]<=n[i+1]) do i:=i+1;
delete(n,i,1);
s:=s-1;
end;
while (length(n)>1)and(n[1]='0') do delete(n,1,1);
writeln(n);
end.
编程不仅仅是代码,更重要的是从代码中领会思想