Posted on 2008-05-12 14:28
blues 阅读(301)
评论(0) 编辑 收藏 所属分类:
Interview
(转载题目)有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间
本人解答:
其实文中蚂蚁相撞两蚂蚁调头
可以这样看问题,如果相撞后,杆可以过两只蚂蚁
蚂蚁不调头,即擦肩而过,继续沿原来方向前进(与调头是一样的,只是换了一只蚂蚁而已)
这样问题就简化了,呵呵。
即所有蚂蚁中离杆其中一端最远的那只蚂蚁,即为最长时间。
即27-3=24
同理,最短时间为
所有蚂蚁使用时间:A最短是3, B最短是7, C最短11, D最短是10, E最短是4。
所以总的最短时间为11.
不知道小弟的思路是否正确?~~~~
至于为什么说27-3是最长,我中间跳跃一些而已。
就是观察分析了两端的蚂蚁后说的, A离左边3, E离右边4。
所以最长就是27-3=24。 上一句分析我省略了而已,SORRY。
最短:
我只是将五个蚂蚁的最短时间列出来而已, 最长时间列出来没意义了。
如果用式子总结便是: 最靠近杆中间点的那个蚂蚁的最短时间,即C距离左边。