動態規劃之輪船租用問題(思考分析 解決 演算法模板)

2021-10-19 04:17:59 字數 1204 閱讀 1718

一、問題描述:

長江遊艇俱樂部在長江上設定了n個遊艇出租站1,2,3…,n。

遊客可以在這些遊艇出租站用遊艇,並在下游的任何乙個遊艇出租站歸還遊艇。

遊艇出租站i到遊艇出租站j之間的租金為r(i,j),1<=i試設計乙個演算法,計算從遊艇出租站1到出租站n所需的最少租金。

第一行表示有n個站點。 

接下來n-1行是r( i ,  j)。

輸入示例(有3個站點,從 1 到 2 要 5,從 1 到 3 要 15,從 2 到 3 要 7):

35  157

輸出最從遊艇出租站1到出租站n所需的最少租金。

二、問題分析:

1、首先因為它是貪心演算法無法解決的最優問題,因此可以判斷為動態規劃求解。為什麼貪心演算法不行?假設在第i個出租站能選擇的下乙個出租站有n-i個,當我們要走到第n個出租站的時候,用貪心智慧型選出當前情況下的最優值,但是在該方案(當前最優)選擇後,可能後續的花費更高,因此就導致該方案不是最優解。

2、子問題分析

最優子結構證明:對於最有方案t(1 ... i ... j ... n)而言,其中i->j 必定是i到j碼頭的最優解,為什麼呢?因為假設該i->j(記z1)不是最優解,那麼就存在乙個是i->j的最優解(z2),讓該解z2來替換z1,那麼最終的方案t'必定比t花費的更少。

3、通項、出口、起調、轉移

首先:m=2的情況,即只有兩個出租站。a-b則是直接直達。

考慮m=3的情況,即有a b c 三個出租站,那麼a到c的最優是什麼情況?列舉方案(1)a-b + b-c(2)a-c,此時發現子問題即是a-b的距離加上b-c的距離。

考慮m=4的情況,即a b c d四個出租站,那麼a到d的最優是什麼情況?列舉方案(1)a-b + b-c + c-d(2)a-b + b-d (3)....

此時,子問題變成了a-b b-c c-d;a-b b-d的最短路徑情況,因為是最優子結構,故這些自問題應該也是最優的!

那麼開始考慮「重疊子問題」對於方案(2)b-d的距離即是方案(1)b-c c-d方案(2)b-d的最優情況。即對於a-d的求解包括了b-d的求解。因此可以將其儲存下來。

由此變成了dp【b】【d】的距離。

三、問題解決:

核心**   

for(int l=2;l<=n;l++)

}}

動態規劃之套匯問題(思考分析 解決 演算法模板)

一 問題描述 套匯是指利用貨幣匯兌率的差異將乙個單位的某種貨幣轉換為大於乙個單位的同種貨幣。例如,假定1 美元可以買0.7 英鎊,1 英鎊可以買9.5 法郎,且1 法郎可以買到0.16美元。通過貨幣兌換,乙個商人可以從1 美元開始 得到0.7 9.5 0.16 1.064美元,從而獲得6.4 的利潤...

動態規劃 遊艇租用問題

問題描述 長江遊樂俱樂部在長江上設定了n個遊艇出租站,遊客可以在這些遊艇出租站用遊艇,並在下游任何乙個遊艇出租站歸還遊艇,遊艇出租站i到j之間的租金是rent i,j 其中1 i 這是一道典型的動態規劃問題。解題的思路是,既然要得到最小的花費,那麼就從最底層開始,逐層向上計算每兩個站之間的最小花費,...

動態規劃 遊艇租用問題,C

採用動態規劃的思想完成以下任務 遊艇租用問題 問題描述 長江遊艇俱樂部在長江上設定了n個遊艇出租站1,2,n。遊客可在這些遊艇出租站租用遊艇,並在下游的任何乙個遊艇出租站歸還遊艇。遊艇出租站i到遊艇出租站j之間的租金為r i,j 1 i include using namespace std int...