随笔:20 文章:1 评论:8 引用:0
BlogJava 首页 发新随笔
发新文章 联系 聚合管理

我的评论

你给出的想法和代码都很优秀,我觉得你对本题有两点非常独特的见解:1)你会使用字符索引来“组合”最后的字符串,而且几处用到的indexOf非常合理,也很巧妙;2)validate函数的使用,尤其是判断重复字符串上面,很难想到。我建议你还能去网上找到两个版本的程序,其中一个也是用递归,另一个是图的思想,一定要做多组测试,因为网上好多的程序都是错误的,你这几组的数据都是对的。

补:在“注”中有笔误,当i=0的时候,i+48是0的ASCII,因为你index中存的毕竟是索引,是位置嘛,所以是从0开始的
re: 拆半查找的递归和非递归算法 dreamingnest 2008-05-12 15:56  
嗯,应该是的,只是测试的例子多了些,也看了好半天。汗``
re: 关于蚂蚁问题(Ants) dreamingnest 2008-05-12 15:26  
你为什么确定27-3=24是便是最长的呢?我觉得你说的“即所有蚂蚁中离杆其中一端最远的那只蚂蚁,即为最长时间”和“所有蚂蚁使用时间:A最短是3, B最短是7, C最短11, D最短是10, E最短是4”中的两个“所有”和我解释的还不太一样,呵呵。

·最长时间:是按照你说的“蚂蚁不调头,即擦肩而过,继续沿原来方向前进(与调头是一样的,只是换了一只蚂蚁而已)”这样,但有两点说明:(1)通过分析,我们只需判断最两端的两只蚂蚁便足够了,证明见二楼“银河使者”的解释。(2)一定要求出4个数进行比较后才可以,假设最左端和最右端的位置为L和R,中长度为T,那么最长的时间为max(max(L,T-L),max(R,T-R))。

·最短时间:通过分析后,也只需看最中间的一个(共奇数蚂蚁)或两个(共偶数蚂蚁)蚂蚁到达某一端的最短时间,对于奇数:min(L,T-L),对于偶数:max(min(L,T-L),min(R,T-R))。

·通过程序来实现是有必要的,这算是一道模拟题目,可在情况类似的计算应用中会遇到,正如英文描述中可能出现1000000数量级别的,这样我们便无法直接得出结果。此题能作为面试题,而不是笔试题,就是在考察一种思想,避开“一根不能同时通过两只蚂蚁”的迷惑。

·感谢大家能仔细讨论这个问题,写程序相信每个人都能实现,只是这道题给我们的启发是非常大的~
re: 百度面试题的java实现 dreamingnest 2008-05-10 11:37  
刚刚看到你对这道题目的解释,新写了一篇文章,觉得最大是24秒,而且感觉没有这么复杂,可以看一下,相互学习吧,加油~
CALENDER
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔分类(13)

随笔档案(21)

外面的世界

这里的朋友

搜索

  •  

最新评论

阅读排行榜

评论排行榜


Powered By: 博客园
模板提供沪江博客