长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。
每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。
当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。
这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。
请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。
如果按照题意,总是想着蚂蚁碰头后往回走,那么他们整体的轨迹将变得杂乱无章,而且要考虑相对运动,很是麻烦
然而思考一下,按照题意理解当蚂蚁碰面时,蚂蚁都被感冒传染了并且掉头走,那么这两只蚂蚁有什么差异呢? 完全没有差异(速度,方向,感冒一模一样)那么这两只蚂蚁可以看作等价的,可以认为他们只是擦肩而过并且感冒传染了。
如此以来,完全可以忽略蚂蚁碰头后往回走这个要求,题目就变成了:每只蚂蚁只是从一个起点朝一个方向走到头,如果相遇,就会感染,并且不会掉头,一直沿着一个方向走。
那么就有以下两种情况:
1.在初始感冒的蚂蚁身前没有相对而行的蚂蚁,那么最后只会有初始蚂蚁感冒。
2.在初始感冒的蚂蚁身前,有相对而行的蚂蚁会传染感冒的,然后相对而行的蚂蚁感染继续向前行进,他也会感染与他方向不同的蚂蚁
最终结果:
要么就是1
要么就是(在初始感冒的蚂蚁身前相对而行的蚂蚁数量)+(在初始感冒的蚂蚁身后同向而行的蚂蚁数量)+(初始感冒的蚂蚁)。