面試:等車時間
已知我家門口的公交站有兩班公交車.
其中一輛每隔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
如果算錯了 還請各位朋友指正
浙公網安備 33010602011771號