微軟過橋問題

2021-08-25 12:50:40 字數 770 閱讀 9482

u2合唱團在17分鐘內得趕到演唱會場,途中必須跨過一座橋,4個人從橋的同一端出發,我們得幫助他們到達另一端,天色很暗,而他們只有乙隻手電筒。一次同時最多可以有兩人一起過橋,而過橋的時候必須持有手電筒,所以就得有人把手電筒帶來帶去,來回橋兩端。手電筒是不能用丟的方式來傳遞的。4個人的步行速度各不同,若兩人同行則以較慢者的速度為準。bono需花1分鐘過橋,edge需花2分鐘過橋,adam需花5分鐘過橋,larry需花10分鐘過橋。他們要如何在17分鐘內過橋呢?

這個問題如果用圖論來建模(基於系統狀態轉換模型),就可以以4個人在橋兩端的狀態來作為節點來構造乙個有向圖。以已經過橋了的人的狀態作為圖的節點,初始時沒有人過橋,所以以空表示,第一輪有兩個人過橋,有6種可能的組合,(1,2)(1,5)(1,10)(2,5)(2,10)(5,10),從空的狀態轉換到這些狀態的需要的時間分別為2,5,10,5,10,10分鐘,時間就作為有向邊的權值。當有兩個人過橋後,需要乙個人拿手電筒回去接其他人,這時有四種可能的情況,分別是1,2,5,10中的一人留在了河的對岸,(1,2)這種狀態只能轉換到(1)(2)兩種狀態,對應的邊的權值分別為2,1分鐘,(1,2)轉換到(1)時也就是2返回了,返回需要耗時2分鐘,依此類推可以建立如圖7-6所示的圖論模型。

要求出最少需要多長時間4人全部通過小橋,實際上就是在圖中求出(空)節點到(1,2,5,10)節點間的最短路徑。根據dijkstra最短路徑演算法很容易求出其最短路徑:這樣總時間為2+1+10+2+2=17分鐘。

微軟過橋問題與測試人員素養

微軟過橋問題與測試人員素養 1.1.1微軟過橋問題與測試人員素養 微軟面試題過橋問題在it業內幾乎已變成乙個眾所周知的問題,問題如下 4個人在晚上過一座小橋,過橋時必須要用到手電筒,只有一枚手電筒,每次最多隻可以有兩人通過 人多了橋支撐不住就塌了 4個人的過橋速度分別為1分鐘 2分鐘 5分鐘 10分...

微軟過橋問題與測試人員素養

1.1.1微軟過橋問題與測試人員素養 微軟面試題過橋問題在it業內幾乎已變成乙個眾所周知的問題,問題如下 4個人在晚上過一座小橋,過橋時必須要用到手電筒,只有一枚手電筒,每次最多隻可以有兩人通過 人多了橋支撐不住就塌了 4個人的過橋速度分別為1分鐘 2分鐘 5分鐘 10分鐘,試問最少需要多長時間4人...

微軟過橋問題與測試人員素養

微軟過橋問題與測試人員素養 微軟面試題過橋問題在it業內幾乎已變成乙個眾所周知的問題,問題如下 4個人在晚上過一座小橋,過橋時必須要用到手電筒,只有一枚手電筒,每次最多隻可以有兩人通過 人多了橋支撐不住就塌了 4個人的過橋速度分別為1分鐘 2分鐘 5分鐘 10分鐘,試問最少需要多長時間4人才可以全部...