動態規劃學習筆記 3

2021-08-28 09:35:01 字數 922 閱讀 6384

某工廠預計明年有a、b、c、d四個新建專案,每個專案的投資額wk及其投資後的收益vk如下表所示,投資總額為30萬元,如何選擇專案才能使總收益最大?

project

wk

vkab

cdm[ i ][ j ] 表示 在面對第 i 件物品,且揹包容量為 j 時所能獲得的最大價值

這時候揹包容量不足以放下第 i 件物品,只能選擇不拿

m[ i ][ j ] = m[ i-1 ][ j ]

這時揹包容量可以放下第 i 件物品,我們就要考慮拿這件物品是否能獲取更大的價值。

m[ i ][ j ]=m[ i-1 ][ j-w[ i ] ] + v[ i ]

這裡的m[ i-1 ][ j-w[ i ] ]指的就是考慮了i-1件物品,揹包容量為j-w[i]時的最大價值,也是相當於為第i件物品騰出了w[i]的空間。

m[ i ][ j ] = m[ i-1 ][ j ]

for (int i = 1; i <= n; i++)

}

完整**

#include #include #include using namespace std;

int main()

; int w[7] = ;

int m[100][100];

int n = 6, c = 12;

memset(m, 0, sizeof(m));

for (int i = 1; i <= n; i++)

} for (int i = 1; i <= n; i++)

return 0;

}

學習筆記 動態規劃

動態規劃 多階段決策 意義 求解決策過程最優化的數學方法 基本思想 將待求解的問題分為若干個階段,即若干個互相聯絡的子問題,在求解子問題的過程中逐步推導出原問題的解。核心 在求解子問題的過程中,儲存子問題的解。注1 動態規劃的思想實際上和遞迴相似。都是通過逐步推導,得到答案。而用它們解題時的核心也都...

學習筆記 動態規劃

bullet 先來看乙個問題 小張現在有8個任務可選,每個任務都必須在規定的時間段完成不能多也不能少,而且每個任務都有對應的報酬如下圖,問小張應如何選擇才能拿到最多的報酬?那我們換種方法來解決這個問題吧,首先,每個任務都有選和不選兩種選擇,我們從最後乙個任務開始模擬這個過程。首先我們需要先用乙個陣列...

動態規劃學習筆記

最近開始學習動態規劃演算法,我的理解是動態規劃演算法是乙個用空間換時間的演算法,常用在一些求最解 計數 判斷有無等問題中,且這些問題都存在大量重複的計算。動態規劃的思想就是將已經計算過的資料儲存起來,在下次用到時可以直接取用,這樣就消除了重複計算。而且這也是體現 動態 的地方,就是能根據之前情況進行...