【问题标题】:Maximum sum of non-contiguous array elements that is divisible by K可被 K 整除的非连续数组元素的最大总和
【发布时间】:2015-08-22 05:12:17
【问题描述】:

给定一个数组arn 元素,找出数组中能被K 整除的最大和。求和中使用的元素不必是连续的。

示例:对于 N = 4ar = [2,2,1,2]K = 3,答案将为 6(包括元素 2、2 和 2)。

【问题讨论】:

  • sum元素个数是否受K限制?
  • 有趣的问题。我想,一个好的第一步是对每个单独的元素进行模数,将它们分别切割以适应有限域。但这只是准备工作,在您的示例中甚至不需要。哇,我只能考虑进行试错 (2^n)-1 操作,其中 n 是数组中元素的数量,但是当我们找到一个组合 X 使得 X+1 = 0 时停止。但是必须有更好的方法。
  • @Henry - 对不起,也许我的问题模棱两可。最后一部分是最大总和应该能被K整除
  • 所以这根本不是关于模运算的,这就是我阅读标题的方式。我冒昧地更新了这个问题。

标签: arrays algorithm


【解决方案1】:

这只是subset sum 的问题。

dp[i] = true if we can build sum i and false otherwise.

dp[0] = true
s = 0
for each number x in the array:
  s += x
  for j = s down to x
    dp[j] = dp[j] OR dp[j - x]         

然后找到最大的j <= s 使得j % k == 0dp[j] == true

【讨论】:

    猜你喜欢
    • 2011-05-28
    • 1970-01-01
    • 2012-10-16
    • 2012-11-10
    • 1970-01-01
    • 2020-11-01
    • 2016-03-24
    • 2012-07-31
    • 2019-10-05
    相关资源
    最近更新 更多