【问题标题】:Maximize the value of matrix after doing a specific matrix operation在进行特定的矩阵运算后最大化矩阵的值
【发布时间】:2017-03-24 07:10:41
【问题描述】:

我已尝试解决此问题。但是,没有成功。

到目前为止我的方法:

  1. 将所有组合存储在一个临时二维数组中。
  2. 逐一访问矩阵的单元格并更新当前单元格和相邻的单元格 细胞。
  3. 然后将方程给出的矩阵值存储在辅助数组中, 这需要 O(n^2)
  4. 现在,比较结果。

这是给我的,TLE。我无法在这里提出重叠的子问题。

你能帮帮我吗?

【问题讨论】:

    标签: algorithm data-structures dynamic-programming


    【解决方案1】:

    您根本不必处理组合。可以证明,矩阵应满足以下条件: 1.修改后的矩阵元素之和应该等于原矩阵元素之和。 2.每个元素都应该在[1,M]范围内

    所以算法可以描述为:

    1. 计算原始矩阵元素的总和,S。
    2. 用个填充矩阵
    3. 计算差值 D = S - N*N。
    4. 从右下角移动,用值 V = min(D, M) 填充元素,
    5. 将D减V,重复4直到D>0

    【讨论】:

    • 首先,非常感谢您的帮助。我是认真的。现在,直截了当地说,你能解开我的一些疑虑吗? Calculate the sum of original matrix elements, S. --> 你的意思是逐行遍历吗? Fill matrix with ones -- 那就是辅助数组吧?
    • 您可以计算遍历矩阵所有元素的元素之和。您可以填充辅助数组,我们填充原始矩阵 - 没关系,因为您有矩阵元素的总和
    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多