面试:等车时间

已知我家门口的公交站有两班公交车.

其中一辆每隔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

 

如果算错了 还请各位朋友指正

你可能感兴趣的:(面试)