面试:等车时间
已知我家门口的公交站有两班公交车.
其中一辆每隔M分钟经过我家门口.
另外一辆每隔N分钟经过我家门口.
我随便等到一辆车都可以坐车去上班....
那么平均情况下 我要等多久 才能等到一辆车??
应用场景是在做地图寻路算法的时候....要计算等车时间, (用于估计你要多久才能到达目的地).
一个很简单的提示:如果只有一辆车M,平均时间是M/2,如果多了一辆车n...用的时间必然小于M/2.
PS: 有很多朋友会认为答案是(M+N)/2 这明显是不对的 因为我只要随便等到一辆车就能上班了.
PS: M*N/(M+N) 也是错的.
PS:我也不知道什么时候出门等车啦 ,也不知道m和n什么时候发车,反正就是随机的.
附上一些简单的验证逻辑用于验算:
假设结果是s
那么必然有
s<n/2
s<m/2
假设m非常大 那么必然有 s约等于n/2
PS:目前为止 最快的一个朋友用了40分钟想出来.....- -# 额..其实这个题目很简单的
PS:做程序做太久了脑筋别僵化了....尝试计算下 看看脑子能不能转的过弯来吧
PS:...先放出一部分答案
1.当m=n的时候 两个车的间隔时间就是相等的 , 那么两班车之间的时间间隔就很很重要了
假设时间间隔为k 那么平均时间为 对k积分 从0到n (2k*k+n*n-2kn)dk/2n*n
那么平均等车时间为 n /3
搞不上来积分的图片..郁闷
2. 当2n>m>n
假设时间间隔为k 那么平均时间为 对k积分 从0到m
(2k*k+2n*n+m*m-2mk-2mn-2nk)dk/2m*m
结果为(3n*m*m-9m*n*n+11n*n*n)/18m*m
如果算错了 还请各位朋友指正