經典演算法一 過橋問題

2022-08-05 11:30:16 字數 720 閱讀 3218

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

針對上篇演算法題--過橋問題的解析如下

解答其實也容易,能者多勞這四個字就足以形容解答方案了——用時短的人必須要多跑幾趟以便傳遞手電筒。

設這四個人叫做a,b,c,d,他們所需要的時間分別是1,2,5,8分鐘。

第一步:a和b過橋,花費2分鐘。

第二步:a回來,花費1分鐘。

第三步:c和d過橋,花費8分鐘。

第四步:b回來,花費2分鐘。

第五步:a和b過橋,花費2分鐘。

這樣只要花費2+1+8+2+2=15分鐘,下面再來考慮如何用程式來解決這類問題,在寫程式之前還有個細節要考慮下,比如a,b,c,d四個人所需要的時間分別是1,8,9,10分鐘。

方案一第一步:a和b過橋,花費8分鐘。

第二步:a回來,花費1分鐘。

第三步:c和d過橋,花費10分鐘。

第四步:b回來,花費8分鐘。

第五步:a和b過橋,花費8分鐘。

一共要8+1+10+8+8=35分鐘。

方案二這道題對於博主也有點難度,正在每天增加記憶當中,希望可以對大家有所幫助!

一週一演算法 演算法7 Dijkstra最短路演算法

上週我們介紹了神奇的只有五行的floyd最短路演算法,它可以方便的求得任意兩點的最短路徑,這稱為 多源最短路 。本週來來介紹指定一個點 源點...

分治演算法(一)

當我們求解某些問題時,由於這些問題要處理的資料相當多,或求解過程相當複雜,使得直接求解法在時間上相當長,或者根本無法直接求出。對於這類問題,...

Dijkstra演算法(一)

由於準備美賽,所以提前看一下相關書籍。 參考 資料建模演算法與應用 第二版 , dijkstra演算法是典型最短路演算法,用於計算一個節點到...