将 N * M 矩阵形式的岛分成 1 * 1 矩阵。您可以通过水平切割或垂直切割来分割岛屿。在每种情况下,岛屿分为2件。每个细胞中都有一些硬币。分裂的成本是岛上所有分裂的单元的总和。
问题是以最低成本分割岛屿。
输入格式: 第一行包含2个整数 N 和 M
然后N行跟随每个包含 M 整数。
输出格式:
打印所需的最低费用。
Sample Input: Sample Output:
2 2 16
2 2
1 3
我正在寻找解决此问题的方法。
答案 0 :(得分:0)
@zenwraight
算法: -
取n * m硬币矩阵作为输入arr [n] [m] 为行和列创建总和矩阵 - sum_row [n]和sum_col [m] 和total_sum func(arr [n] [m])---->在第一行之后水平切割然后我们得到一个arr [n-1] [m]和arr [1] [m]的矩阵。成本是total_sum 现在将arr [1] [m]垂直地打破每个元素 - sum_row [0] + cost(arr [1] [m-1])并很快直到所有first_row元素成为单位矩阵。 FUNC(ARR [N-1] [M])
答案 1 :(得分:-1)
@zenwraight以上示例输入和输出的说明:
首先,我们用成本8分割矩阵,得到2个矩阵,如(2,2)和(1,3)。
现在我们可以将成本4分成(2,2)到(2)和(2)。
现在我们可以将(1,3)与成本4分成(1)和(3)。