矩阵中子和元素的动态规划

时间:2015-05-19 20:07:00

标签: algorithm dynamic-programming divide-and-conquer bottom-up

鉴于棋盘有4行和n列。在每个单元格上都有一个整数。鉴于它们中的一部分2n光盘,或者所有这些光盘都可以放在电路板上的不同单元上,因此总和最大。唯一的限制是2个光盘不能垂直或水平地彼此相邻。如何使用DP在{{​​1}}中将最佳光盘组合放在电路板上?

1 个答案:

答案 0 :(得分:1)

1,我们不可能使用2 * n以上的磁盘,因为任何列最多可以包含2个磁盘。

让我们说d [i] [mask] - 用磁盘填充从1到i的列后获得的最大量,以便最后一列填充为掩码(掩码可以是0000,0001,0010,0100,0101,1000, 1001或1010,其中1表示放置磁盘,0表示不放置磁盘

所以d [i] [mask1] =(d [i-1] [mask2]的最大值+在第i列上应用mask1获得的数字),其中mask2可以是任何与mask1不相矛盾的掩码

编辑1:您无需更改任何内容。当你在某个面具的第i步时,它只取决于i-1面具的答案。你已经拥有了所有这些。您只是尝试从有效的那些更新当前的d [i] [掩码]。正如我已经说过的d [i] [mask] - 存储可以获得的最大值,从1到i填充列,最佳,以便最后一列具有此掩码形式的磁盘(与i之前的掩码无关紧要)填充了第一列,因为它们不会影响下一列)