【发布时间】:2014-03-25 03:57:39
【问题描述】:
给定一个由 M X N 块木制方形块组成的木板,我们需要找到将木板分成方形木块的最小成本。
我们可以沿水平线和垂直线切割电路板,每次切割都会将电路板分成更小的部分。电路板的每一次切割都有成本,具体取决于切割是沿水平线还是垂直线。
让我们用 x[1], x[2], ..., x[n-1] 表示沿连续垂直线切割它的成本,用 y[1], y[2], ... 沿水平线切割它的成本。 , y[m-1]。如果切割(成本为 c)并经过 n 段,则此切割的总成本将为 n*c。
将整块木板切割成单个正方形的成本是用于将整块木板切割成 1x1 方形木块的连续切割成本的总和。
将整块木板分成 1x1 大小的正方形的最低成本是多少。
示例:让我们采用 6*4 网格。
沿行切割成本如下:[2 1 3 1 4]
按列成本切割如下:[4 1 2]
这里的答案是 42
我们应该依次使用 y5、x1、y3、y1、x3、y2、y4 和 x2 开始切割。第一次切割将是水平切割,其中成本 = y5 = 4。接下来我们将使用 x1 进行垂直切割。由于此切割通过两个线段(由先前的垂直切割创建),因此总成本将为 2*x1 = 2*4。类似地,下一个水平切割 (y3) 将穿过两个段,成本为 2*y3 = 2*3。我们可以以类似的方式进行,得到总成本为 4 + 4*2 + 3*2 + 2*2 + 2*4 + 1*3 + 1*3 + 1*6 = 42。
我的方法:从第 1 行到第 2 行之间的切割开始检查每个切割,然后依此类推。但显然效率太低。那么如何解决这个问题?
【问题讨论】:
标签: algorithm