演算法分析與設計作業7 動態規劃 投資問題

2021-10-04 23:18:42 字數 550 閱讀 8731

設m元錢,n項投資,函式fi(x)表示將x元投入第i個專案所產生的效益(i=0,1,2,3……n)。

問:如何分配這m元錢,使得投資總效益最高?

將這個問題分割開看,將一部分資金x元分割給第k個專案,那麼剩下k-1個專案分得資金m-x元,零gk(x)表示將資金x分給前k個專案的最大利潤,則求max(fk(x)+gk-1(m-x))

當k=1時:

g1(x)= f1(x),即找到這唯一的乙個專案的最大利益即為所求的答案

當1int arr_p[pn]

[money+1]

;/*pn為專案的個數,money為總投資額,因為要存0,所以加一,這陣列用來儲存每個專案的f(x)*/

int arr_p_r[pn]

[money+1]

;/*這個陣列用來儲存不同k不同投資下的g(x)*/

輸入arr_p;

將arr_p_r所有位初始化為0;

for(i=

0;i)else}}

}}cout<[money]

;//列印最後的g(m)時間複雜度:o(n* m* m)

演算法設計與分析 動態規劃

最大子段和問題 給定由n個整數 包含負整數 組成的序列a1,a2,an,求該序列子段和的最大值。i.當所有整數均為負值時定義其最大子段和為0。所求的最優值為 i.例如,當 a1,a2,a7,a8 1,3,7,8,4,12,10,6 時,最大子段和為 bj是1到j位置的最大子段和 由bj的定義易知,當...

演算法設計與分析 動態規劃

分治技術的問題 子問題是相互獨立的 如果子問題不是相互獨立的,分治演算法將重複計算公共子空間,效率很低 提高效率的方法 從規模最小的子問題開始計算 用恰當資料結構儲存子問題的解,供以後查詢 確保每個子問題只求解一次 優化問題 給定一組約束條件和乙個代價函式,在解空間中搜尋具有最小或最大代價的優化解 ...

演算法設計與分析之動態規劃

include void main system pause 用陣列實現斐波那契函式 include include intmain int i 0 for i 2 i 20 i for i 0 i 20 i system pause return0 遞迴實現斐波那契函式 include intfi...