pascal 难题给出一个多位数N(不超过240位),从中删除S个数字(不超过200的正整数),要求删除后的N按原次序组成新数,使新数最小,输出最小的新数.样例:Delet.in23586490133Delet.out2349013(快!)1.免文
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/04 05:26:13
pascal 难题给出一个多位数N(不超过240位),从中删除S个数字(不超过200的正整数),要求删除后的N按原次序组成新数,使新数最小,输出最小的新数.样例:Delet.in23586490133Delet.out2349013(快!)1.免文
pascal 难题
给出一个多位数N(不超过240位),从中删除S个数字(不超过200的正整数),要求删除后的N按原次序组成新数,使新数最小,输出最小的新数.
样例:
Delet.in
2358649013
3
Delet.out
2349013
(快!)
1.免文件输入输出.
2.要程序.
pascal 难题给出一个多位数N(不超过240位),从中删除S个数字(不超过200的正整数),要求删除后的N按原次序组成新数,使新数最小,输出最小的新数.样例:Delet.in23586490133Delet.out2349013(快!)1.免文
____这道题不妨用贪心的思想解决.
____我们可以从高到低考察原数的每一位,对于剩余的删除次数枚举删除的次数,可以不删.在所有的可能情况中选择删除后当前位最小的情况.如果有多种情况满足最优情况,则选择删除最少的.如果最终删除剩余次数大于零,则从数串末尾删除剩余的位数.最后输出.
附上pascal源程序,
var i,j,k,l,m,n,left,min,js:longint;
s,mid:string;
ch:char;
begin
readln(s);
readln(k);
left:=k;
n:=0;
for js:=1 to length(s) do
begin
min:=10;
inc(n);
for i:=0 to left do
begin
mid:=s;
delete(mid,n,i);
if ord(mid[n])-48