15 1 鋼條切割 動態規劃

2021-07-11 05:30:28 字數 784 閱讀 6567

問題:

給定一段長度為n英吋的鋼條和乙個**表,求切割鋼條方案,使收益最大(切割本身沒有成本)。

解法一(帶備忘錄的自頂向下法):

/***

* 帶備忘錄的自頂向下法

*@param p 長度為i的鋼條的收益為p[i]

*@param n 待切割的鋼條的長度

*/public

static

intmemoizedcutrod(int p,int n)

return memoizedcutrodaux(p,n,r);

}private

static

intmemoizedcutrodaux(int p,int n,int r)

int q=-1;

if (n==0) else

}r[n]=q;

return q;

}

解法二(自底向上法):

/***

* 自底向上法

*@param p 長度為i的鋼條的收益為p[i]

*@param n 待切割的鋼條的長度

*@return

*/public

static

intbottomupcutrod(int p,int n)

r[i]=q;

}return r[n];

}

動態規劃 鋼條切割

一家公司購買長鋼條,將其切割成短鋼條 切割本身沒有成本,長度為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 什麼是動態規劃,我們要如何描述它?動態規劃演算法通常基於乙個遞推公式及乙個或多個初始狀態。當前子問題的解將由上一次子問題的解推出。動態規劃和分治法相似,都是通過組合子問題的解來求解原問題。分治法將問題劃分成互不相交的子問題,遞迴求解子問題,再將他們的...