在执行特定矩阵运算后最大化矩阵的值

时间:2017-03-24 07:10:41

标签: algorithm data-structures dynamic-programming

Problem description

我试图解决这个问题。但是,没有成功。

到目前为止我的方法:

  1. 将所有组合存储在临时2D阵列中。
  2. 逐个访问矩阵并更新当前单元格和相邻单元格 细胞。
  3. 然后将等式给出的矩阵值存储在辅助数组中, 需要O(n ^ 2)
  4. 现在,比较结果。
  5. 这是给我的,TLE。我不能在这里提出重叠的子问题。

    你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

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

范围内

所以算法可以描述为:

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