一家公司購買長鋼條,將其切割成短鋼條**,切割本身沒有成本,長度為i的短鋼條的**為pi。那給定一段長度為n的鋼條和乙個**表pi,求鋼條的切割方案使得收益rn最大。
輸入鋼條的長度n。
輸出獲得的最大收益。
具體思路:對n進行切割,儲存切割產生的最大收益,如value[10]表示對10進行切割產生的最大收益,明顯其中有4種切割方式,並且用到了前面產生的結果
value[10] = max
從一開始的初始資料的第2個位置開始進行切割,當切割產生的價值大於當前價值的時候,則對最大價值進行更新,最終得到的第n個值就是我們想要的結果
具體實現的**如下:
/*
鋼條切割問題
一家公司購買長鋼條,將其切割成短鋼條**,切割本身沒有成本,長度為i的短鋼條的**為pi。
那給定一段長度為n的鋼條和乙個**表pi,求鋼條的切割方案使得收益rn最大
輸入鋼條的長度n,輸出得到最大收益
對n進行切割,儲存切割產生的最大收益,如value[10]表示對10進行切割產生的最大收益,明顯其中有4種
切割方式,並且用到了前面產生的結果
value[10] = max
*/#include
using
namespace std;
//儲存切割的結果
int value[
1000]=
;void
main()
//更新value的值
value[i]
= max_value;}}
cout << value[n]
<< endl;
}
動態規劃 鋼條切割問題
已知鋼條切割的不同長度對應的不同 如下所示 長度i 1 23 45 67 89 10 pi 1589101717202430 求輸入長度,輸出最佳的收益。詳細理論知識見 演算法導論第十五章 p359 書中給出三個演算法 一 自頂向下遞迴實現 缺點 當n足夠大時,時間會 性地增長。偽 cut rod ...
動態規劃 鋼條切割問題
動態規劃與分治法相似,都是通過組合子問題的解來求解原問題。回顧下分治法的原理 它將問題劃分為互不相交的子問題 注意 互不相交 遞迴求解子問題,再將它們的解組合起來,即為原問題的解。但是,動態規劃與分治法不同,有以下幾點 1 對於子問題重疊的情況,分治法則重複求解,不高效。而動態規劃對每個子問題只求解...
動態規劃 鋼條切割問題
一家公司購買長鋼條,將其切割成短鋼條 切割本身沒有成本,長度為i的短鋼條的 為pi。那給定一段長度為n的鋼條和乙個 表pi,求鋼條的切割方案使得收益rn最大。如乙個pi如下 長度i123 4567 8910 pi15 891017 1720 2430 在距離鋼條左端i長度處,我們總是可以選擇切割或者...