某工廠預計明年有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個任務可選,每個任務都必須在規定的時間段完成不能多也不能少,而且每個任務都有對應的報酬如下圖,問小張應如何選擇才能拿到最多的報酬?那我們換種方法來解決這個問題吧,首先,每個任務都有選和不選兩種選擇,我們從最後乙個任務開始模擬這個過程。首先我們需要先用乙個陣列...
動態規劃學習筆記
最近開始學習動態規劃演算法,我的理解是動態規劃演算法是乙個用空間換時間的演算法,常用在一些求最解 計數 判斷有無等問題中,且這些問題都存在大量重複的計算。動態規劃的思想就是將已經計算過的資料儲存起來,在下次用到時可以直接取用,這樣就消除了重複計算。而且這也是體現 動態 的地方,就是能根據之前情況進行...