演算法題21 最快過橋問題

2021-05-25 09:24:13 字數 838 閱讀 6230

4個人在晚上過一座小橋,過橋時必須要用到手電筒,只有一枚手電筒,每次最多隻可以有兩人通過, 4個人的過橋速度分別為1分鐘、2分鐘、5分鐘、10分鐘,試問最少需要多長時間4人才可以全部通過小橋?

n個人過橋,每個人過橋需要的時間為ti(1<=i<=n).每次最多兩個人過橋,並且還要回來乙個。求最快過橋時間。

輸入:每人過橋時間陣列,人數(陣列元素個數)。

輸出:最快時間。

最佳方案構造:以下是構造n個人(n≥1)過橋最佳方案的方法:  

1) 如果n=1、2,所有人直接過橋。  

2) 如果n=3,由最快的人往返一次把其他兩人送過河。  

3) 如果n≥4,設a、b為走得最快和次快的旅行者,過橋所需時間分別為a、b;

而z、y為走得最慢和次慢的旅行者,過橋所需時間分別為z、y。那麼    

當2b>a+y時,使用模式一將z和y移動過橋;    

當2b<a+y時,使用模式二將z和y移動過橋;    

當2b=a+y時,使用模式一將z和y移動過橋。

這樣就使問題轉變為n-2個旅行者的情形,從而遞迴解決之。

……         

a z →          

a ←          

……也就是「由a護送到對岸,a返回」,稱作「模式一」。

……          

……  

第n-2步:   a b →   

第n-1步:    a ←    

第n步:     y z →  

第n+1步:    b ←          

……這個模式是「由a和b護送到對岸,a和b返回」,稱作「模式二」。

**:

演算法之 過河 過橋問題

一 過橋問題 在漆黑的夜裡,四位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,四個人一共只帶了乙隻手電筒,而橋窄得只夠讓兩個人同時通過。如果各自單獨過橋的話,四人所需要的時間分別是1,2,5,8分鐘 而如果兩人同時過橋,所需要的時間就是走得比較...

每日一題 過橋問題

問題描述 今天偶然在 讀者 上看到了益智問題 試著解了一下,感覺還是很有意思,google了一下,晚上都說是微軟面試題,但是我找了找,在 how to slove it 這本書中就有提到。不知道是誰cp的誰的。好吧,說說問題 u2合唱團在17分鐘內得趕到演唱會,途中必須經過一座橋,4個人從橋的同一端...

過橋問題 馬兒賽跑問題 智力題

有a b c d四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1 2 5 10分鐘,只有一支手電,並且同時最多只能兩個人一起過橋。請問,如何安排,能夠在17分鐘內這四個人都過橋?第一趟過去 兩人 花1分鐘和2分鐘的人 總共耗時 2分鐘 第一趟過來 一人 花1分鐘的人 總共耗時 3分鐘 第二趟過...