可被K整除的非连续数组元素的最大总和

时间:2015-08-22 05:12:17

标签: arrays algorithm

给定具有ar元素的数组n,找到可被K整除的数组中的最大总和。总和中使用的元素不必是连续的。

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

1 个答案:

答案 0 :(得分:3)

这只是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 <= sj % k == 0dp[j] == true