永发信息网

NOIP2003。删数游戏,

答案:1  悬赏:20  手机版
解决时间 2021-04-15 14:56
NOIP2003。删数游戏,
最佳答案
【问题分析】
对于这道试题,一般可以采用这样一种解题方式:因为要删除S个数字,可以一个一个的删,每一次删除的目的都是使剩下的数尽量小。那么在每一次删除时,应该选择那个数字?最大的数字还是最左的数字?例如5768,通过观察可以知道删除7这个数字可以使剩余的数最小。通过思考可以得出结论,每一次删除的数字应该是这个数字序列中降序子序列最左边的数字。具体可以这样操作,按高位到低位的方向搜索递减区间。若不存在递减区间,则删尾数符;否则删递减区间的首数符,这样形成了一个新的数串。然后回到串首,重复上述规则,删下一数符…以此类推,直至删除S个数符为止。
例如:N=“8796542”,S=4删数过程如下:
N=“8 7 9 6 5 4 2” //最左边的递减序列是87,删除“8”
“7 9 6 5 4 2” //最左边的递减序列是96542,删除9
“7 6 5 4 2” //最左边的递减序列是76542,删除“7”
“6 5 4 2” //最左边的递减序列是6542,删除“6”
“5 4 2”
【程序代码】
program delete;
var i,j,k,s:integer;
N:string;
begin
readln(n);
readln(s);
while s>0 do begin
I:=1;
while (i Inc(i);
delete(n,I,1);
dec(s);
end;
while (length(n)>1 and (n[1]=‘0’) do
delete(n,1,1);
writeln(n);
end.
【问题思考】
由题可知,贪心算法的实现需要思考两个基本的问题:如何建立和方法的正确性。
如何建立。怎样从一个规模较小的解推出规模较大的解呢?拿这个例题来说,从数串5768删除2位数的模拟过程中推广到240位的数串删数过程。
方法的正确性。确保贪心算法确实是有效是使用贪心算法的关键所在。确定贪心算法是有效的,那么解决该问题在时间复杂度还是在空间的使用方面与其他方法想比较显得更为优势。以例题为例,删数方法是首先按高位到低位的方向搜索递减区间。若不存在递减区间,则删尾数符;否则删递减区间的首数符,这样形成了一个新的数串。这样获得的新数肯定是最小的新数。
对于上述例题,假如我们按照其他的删数过程是正确的,删除最左边的数或者每次删除最大的数。同样以5768为例。删除5得768,删除8得576,都不是最小的数值,假设不成立,证明这种方式是错误的,按照原先设定的方法所得到的解是最优解。
由上例可以获知,贪心的使用需要严格的证明,保证问题的严密性,贪心方法的使用还需结合其他算法的使用,例如:排序、模拟、搜素、枚举等等,但是一旦证明了贪心方法使用的正确性,程序的运行效率会大大提高。证明使用贪心方法的正确性依靠的是严密的数学头脑和以往的经验积累,假如不具备这些条件,使用该方法需要谨慎。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
DNF转区申请提交后,不删邮件和退工会就不能
我想自己编辑照片?怎么联系你?我要拜师
微交易如何看图K线图怎么看
用加减消元法做二元一次方程:3m+4n=-6①3m-2n
6110N手机怎样用数据线下载主题(详细点)
互联网生态系统是什么,互联网是什么
现在有什么悲情的老歌和流行歌曲?
覆铜板1/1 2/2是什么意思
38岁的男人还能让女人怀上孩子吗?孩子质量还
四大美女怎么死的?
同字的部首是什么偏旁,都来答这道小学算术题.
windows 7用运行敢达怎么用不了?
01年雅马哈R1 2万6 大套 车况挺好 值不值??
传统图案怎样结合到平面设计作品中?
跪求空间头像gif类型要求带上卡卡两字
推荐资讯
QQ游戏浪漫玫瑰园免费抽奖雨露的概率
晨辉面馆怎么样
人类为什么要谈恋爱?
为什么我的电脑键盘的D健一按就SD一起的?
QQ秀吧的形象怎么修改不了
黑莓8800软件
怎么练习眼神?
南京市第一医院东院(西门)我想知道这个在什么
如何将QQ绑定在手机上
没有安全感的人会有那些表现?
跪求,庚花/花庚,庚范/范庚,庚兔,庚澈,庚
我的系统是XP的如果重新装XP的 要不要拷贝那
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?