動態規劃入門一 鋼條切割問題

2022-05-05 08:15:07 字數 703 閱讀 9258

問題:

求解乙個鋼條如何切割鋼條的簡單問題。

給定一段長度為n英吋的鋼條和乙個**表pi(i=1, 2, ..., n),求切割鋼條方案,使得銷售收益rn最大。注意,如果長度為n英吋的鋼條的**pn足夠大,最優解可能就是完全不需要切割。

輸入:長度i | 1 2 3 4 5 6 7 8 9 10

**pi | 1 5 8 9 10 17 17 20 24 30

輸出:切割方案。

解析思路詳見演算法導論:p205

#define n 11

// recursive (o(2^n))

int cut_rod_recursive(int *p, int n)

// bottom-up-cut-rod(p,n) (o(n^2))

int cut_rod_bottom_up(int *p, int n)

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

return r[n];

}int main(void)

; for (int i = 0; i < 11; ++i)

return 0;

}

reference:

《演算法導論》原書第3版中文版 第15章動態規劃

動態規劃入門 》轉換為DAG問題 鋼條切割

一家公司購買長鋼條,將其切割成短鋼條 切割本身沒有成本,長度為i的短鋼條的 為pi。那給定一段長度為n的鋼條和乙個 表pi,求鋼條的切割方案使得收益rn最大。如乙個pi如下 1.資料結構表示dag,我們可以把它想象成dag,每個長度想象成乙個點,i j 則i可以指向j,代價為上圖 i j 對應數值,...

動態規劃 鋼條切割問題

已知鋼條切割的不同長度對應的不同 如下所示 長度i 1 23 45 67 89 10 pi 1589101717202430 求輸入長度,輸出最佳的收益。詳細理論知識見 演算法導論第十五章 p359 書中給出三個演算法 一 自頂向下遞迴實現 缺點 當n足夠大時,時間會 性地增長。偽 cut rod ...

動態規劃 鋼條切割問題

動態規劃與分治法相似,都是通過組合子問題的解來求解原問題。回顧下分治法的原理 它將問題劃分為互不相交的子問題 注意 互不相交 遞迴求解子問題,再將它們的解組合起來,即為原問題的解。但是,動態規劃與分治法不同,有以下幾點 1 對於子問題重疊的情況,分治法則重複求解,不高效。而動態規劃對每個子問題只求解...