動態規劃 切割鋼條

2021-10-06 10:34:32 字數 952 閱讀 9933

動態規劃按照我的理解就是避免重複計算,犧牲空間換時間,將重複計算的結果儲存起來,下次用的時候,直接使用儲存的結果,我文字不多,直接上**,沒有程式設計基礎的兄弟們可能不太能看懂

兩種方式一種是遞迴,另一種是遞推(其實就是採用for迴圈)

/*

*動態規劃-切割鋼條

*公尺(m) :1 2 3 4 5 6 7 8 9 10

***(p):1 5 8 9 10 17 17 20 24 30

*/#include#includeint p[11];

int *r = null; /*記錄鋼條公尺長的最佳結果,避免重複計算*/

int max(int a , int b)

/**切割鋼條函式入口,對一些引數進行初始化

*@length 鋼條長度

*/int cuttingsteelbarentrance(int length)

return cuttingsteelbarrunning2(length);}/*

*length : 鋼條長度,不超過10公尺

*遞迴:自頂向下

*/int cuttingsteelbarrunning1(int length)else if(r[length] != -1)

int q = -1;

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

r[length] = q; /*記錄length公尺鋼條的最佳利益*/

return q;}/*

*length : 鋼條長度,不超過10公尺

*遞推:自底向上

*/int cuttingsteelbarrunning2(int length)

r[i] = q;

}return q;

}

演算法不完美,希望各位指點,隨便吐槽

動態規劃 鋼條切割

一家公司購買長鋼條,將其切割成短鋼條 切割本身沒有成本,長度為i的短鋼條的 為pi。那給定一段長度為n的鋼條和乙個 表pi,求鋼條的切割方案使得收益rn最大。如乙個pi如下 長度i12 3456 78910 pi15 891017 1720 2430 在距離鋼條左端i長度處,我們總是可以選擇切割或者...

動態規劃 鋼條切割

這是演算法導論動態規劃的乙個例子,自己實現了一下 給定乙個長度為n英吋的鋼條和乙個 表pi i 1,2 n 求切割鋼條方案,使得銷售收益rn最大。注意,如果長度為n的鋼條 pn足夠大,則最優解可能就不需要切割。分析 如下 include include include using namespace...

動態規劃 鋼條切割

動態規劃 dynamic programming 什麼是動態規劃,我們要如何描述它?動態規劃演算法通常基於乙個遞推公式及乙個或多個初始狀態。當前子問題的解將由上一次子問題的解推出。動態規劃和分治法相似,都是通過組合子問題的解來求解原問題。分治法將問題劃分成互不相交的子問題,遞迴求解子問題,再將他們的...