蚂蚁爬杆问题
来源:互联网 发布:c语言多if 多else用法 编辑:程序博客网 时间:2024/04/27 18:28
今天QQ群里有人贴出一个这样的题目:
一根棍子上面有无数只蚂蚁,假设两只蚂蚁碰到之后就会180度调头反向前进,碰到,再调头,直到棍子的某一头,然后掉下来;然后再假设1只蚂蚁从棍子的这头到那头一共需要5分钟,那么问题是:需要多少时间,这根棍子上所有的蚂蚁会掉下来?
下面假设正方向蚂蚁为1,反方向蚂蚁为0
最短时间是毫无疑问的,000000....01....111111,这样蚂蚁会在2.5分钟全部掉落。
下面寻找最差解,如果中间的蚂蚁为杂乱无章的,比如101010101,因为有无穷多蚂蚁,那中间的蚂蚁势必要进行无限的转头运动。这显然是无意义的。
于是我们规定:蚂蚁转头时间为0,速度为匀速直线运动。
那么考虑如下情况:在111111111111中,突然有只nc蚂蚁是转向的,也就是111101111....那么在0左边的将会依次转头并转回,11101111->1101111->1011111->011111->然后0就掉下去了- -由于转头时间为0,这个过程是在一瞬间完成的。
如果有两只蚂蚁nc了,他们距离如果过远,就会变成两个如上过程。于是,两只蚂蚁无辜地从反方向掉落- -如果距离很近,例如111001111,容易分析得出结论:这个00就会不断左移,直到最左边的两只蚂蚁无辜地从反方向掉落- -
如果有很多蚂蚁nc了,这些nc蚂蚁会群起发动口水战来讨伐我,然后。。。好吧...我nc...
如此我们可以归纳得到:在一个10序列中,设1的个数为m,0的个数为n,则会有m只蚂蚁从正方向掉落,n只蚂蚁从反方向掉落。他们从不同方向掉落的唯一后果是缩短总掉落时间,当m=n时,掉落时间最短,为2.5分钟。
如此,解题完毕。
- 蚂蚁爬杆问题
- 蚂蚁爬杆问题
- 蚂蚁爬杆问题
- 蚂蚁爬杆问题
- 蚂蚁爬杆问题
- 蚂蚁爬杆问题
- 蚂蚁爬杆问题
- 蚂蚁爬杆问题
- 蚂蚁爬杆问题分析
- 4.7 蚂蚁爬杆问题
- 【经典问题】蚂蚁爬杆问题
- 蚂蚁爬杆问题的java实现
- 蚂蚁爬杆问题的扩展
- 蚂蚁爬杆问题 UVA 10881
- 蚂蚁爬杆问题--面向对象,建模
- 蚂蚁过杆问题
- 蚂蚁爬木杆问题
- 蚂蚁爬竹竿问题
- java读取excel
- 关于exe4j打包的java程序的破解
- SurfaceFlinger启动过程分析
- Android4.0添加底层核心服务
- su root 和su - root 的区别
- 蚂蚁爬杆问题
- 技巧 SQL分享
- hdu 1009
- ArcGIS 10.1 for Server 扩展开发(SOE)
- android PowerManager wakelock
- 浅谈 java 设计模式--构建模式(Builder pattern)
- LwIP的内存管理介绍
- 类型检查 与Java 多态相结合及反射机制相结合
- SQL修改指定数据库的表数据类型【如将表中所有varchar类型修改为nvarchar】