演算法學習之動態規劃(二)

2021-10-08 07:37:28 字數 1123 閱讀 1422

神奇的口袋

有乙個神奇的口袋,總的容積為40,用這個口袋可以變出一些物品,這些物品的體積分別為a[1],a[2],a[3]…a[n].john可以從這些物品中選擇一些,如果選出的物體的總體積為40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john有多少種不同的選擇物品的方式。

遞推的做法

#include

#define volume_max 40

using

namespace std;

int ways[volume_max+1]

;int objects=

;int

main()

//易錯點

ways[0]

=1;for

(int i=

1;icout<

}

遞迴的做法
#include

#define volume_max 40

#define object_max 40

using

namespace std;

int objects=

;int

count

(int volume,

int num)

intmain()

0-1揹包問題

有n件物品和乙個容積為m的揹包,第i件物品的體積w[i],價值為d[i].求解將哪些物品裝入揹包可以使得價值總和最大。每種物品只有一件,可以選擇放或者不放(n<=3500,m<=13000)

在這裡插入**片

```#include

#include

#define volume_max 40

using

namespace std;

int most_expensive[volume_max+1]

;int objects=

;int prices=

;int

main()

most_expensive[0]

=0;for

(int i=

1;icout<

}

演算法學習 動態規劃練習(二)

1.1 題目介紹 62.不同路徑 1.2 解題思路 計數型動態規劃 最後一步 最右下角的座標假設為 m,n 則假設走到 m,n 所有可能的路徑為f m n 子問題 走到 m,n 的前一步有兩種可能一種是 m 1,n 一種是 m,n 1 狀態轉移方程 f m n f m 1 n f m n 1 初始化...

演算法學習 動態規劃

動態規劃是解決多階段決策過程最優化的一種方法。對於離散問題,解析數學無法施展,動態規劃則成為非常有效的工具。兩個弱點 1.得出目標函式方程後,尚無統一的處理方法,必須根據具體問題的性質結合相應的數學技巧來求解 2.維數障礙。動態規劃模型的分類 根據決策過程的時間參量是離散的還是連續的變數 1.離散 ...

演算法學習 動態規劃實踐

完成日期 2017.10.26 1.實踐題目 數字三角形 2.問題描述 給定乙個由 n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形 的頂至底的一條路徑 每一步可沿左斜線向下或右斜線向下 使該路徑經過的數字總和最大。3.演算法描述 1 首先該問題有最優子結構和重疊子問題的性質,因...