【发布时间】:2012-10-05 17:55:00
【问题描述】:
我一直在尝试理解动态编程,但每遇到一个新问题,我都会对如何为其编写递归感到有些困惑。
做以下问题: 有一块 L × H 的金属板,可以用机器垂直或水平切割成两块。L、H 都是整数,切割也沿着整数值发生。有 n 个矩形图案 l(i)×h( i) , i ≤ n (l , h 也是整数) 其中第 i 个模式的利润为 c(i)。设计一种有效的算法来切割板材以使总利润最大化。
现在我认为为了解决这个问题,我们将创建一个 LxH 表(将按对角线填充)。但是我们如何形成一个递归来解决这个问题呢?
【问题讨论】:
-
您应该从递归 O(2^n) 解决方案开始,看看如何将其优化为多项式解决方案,而不是相反。
-
@jli 我该如何着手解决这个问题?
-
同样的问题here
-
一个动态规划问题可以通过定义使用递归来解决,因为每个不是基本情况的实例都可以使用动态规划和一些额外的步骤来解决。这与递归有何不同尚不清楚。你确定这不是家庭作业吗?
标签: algorithm dynamic-programming