----------------解决方案--------------------------------------------------------
[bo][un]sunkaidong[/un] 在 2008-6-22 15:53 的发言:[/bo]
每次把最大的那个数剔除,这样可以不违背数字的顺序好像还是可以取到最小的。。当然这样分析不满足你的第一个答案结果
每次把最大的那个数剔除,这样可以不违背数字的顺序好像还是可以取到最小的。。当然这样分析不满足你的第一个答案结果
跟本是有问题的思路...
例如我输入一个数2516789
如果按照每次剔除一个最大的数,那么结果是251
而实际上最小应该是216
----------------解决方案--------------------------------------------------------
楼主是不是想要到完整代码呢
[color=white]
----------------解决方案--------------------------------------------------------
不是啊,想看看大家有什么好方法
----------------解决方案--------------------------------------------------------
简单的说下我的思路
例如有abcdefg这个整数
首先从左往右依次看:
如果a>b,剔除a
如果b>c,剔除b
依次...
===
如果从左往右看,左边的数都小于右边的数,那么剔除一个最大的数
如果同时存在多个最大的数,剔除最左边的那个
===例子===
2125457(剔除4个数)
125457(2>1)
12457(5>4)
1245(最大数7)
124(最大数5)
----------------解决方案--------------------------------------------------------
[bo][un]有敌手[/un] 在 2008-6-22 16:12 的发言:[/bo]
跟本是有问题的思路...
例如我输入一个数2516789
如果按照每次剔除一个最大的数,那么结果是251
而实际上最小应该是216
跟本是有问题的思路...
例如我输入一个数2516789
如果按照每次剔除一个最大的数,那么结果是251
而实际上最小应该是216
我的有问题,你的也好像不对。。我应该说成从最小值的位置开始作为一个子串,从子串中找最小的值,如果这个串满足大于你要的长度,就是答案;如果不是,则要把最小的位置记录,找次小值的位置,然后从最小值的后面找剩下的。。反复这个过程。。刚才弄错了。。不知道现在对不对。。呵呵有问题一起讨论
2516789
如果删除1位,剩下6位。找到最小的位置,从1开始往下找,长度不够,从1往前找,找到2,那么现在是216789.。应该是答案了
[[it] 本帖最后由 sunkaidong 于 2008-6-22 16:26 编辑 [/it]]
----------------解决方案--------------------------------------------------------
我那个方法应该没错吧...
而2516789剔除4个最小值应该是167,我当时直接用眼睛看的...没想到看错了..
----------------解决方案--------------------------------------------------------
恩,我想复杂了。。从左两两比较,如果左边的大于右边的删除左边的,当基本有序的时候从右删除。。方法不错。。。整体的方法是让数列基本有序
[[it] 本帖最后由 sunkaidong 于 2008-6-22 16:54 编辑 [/it]]
----------------解决方案--------------------------------------------------------
楼主的题光是输出就已经n^2,再做也没什么意思
有兴趣的话看我论坛的相应的题吧
[color=white]
----------------解决方案--------------------------------------------------------
这个题目是真的超简单吗
----------------解决方案--------------------------------------------------------