【发布时间】:2020-07-29 08:01:25
【问题描述】:
我在练习一些动态规划问题,遇到了这个问题
给定一个 n(1<=n<=1000) 整数数组和一个正整数 k(k<=1000)。求和能被k整除的最长子序列。
例如,a = [1,6,11,5,10,15,20,2,4,9] 和 k=5。
结果应该是:[9,4,20,15,10,5,11,6] 因为9+4+20+15+10+5+11+6 = 80 可以被 5 整除。
什么是解决这个问题的合适方法?
【问题讨论】:
-
所以我们可以假设它没有连续嵌入到数组中?
-
似乎是子集和问题。把所有的数字加起来。总数是 83。那么问题就变成了,“有没有一个总和为 3 的子集?”在示例中,子集 {1,2} 存在并且我们完成了。如果没有子集总和为 3,那么您需要尝试 8,然后是 13,然后是 18,等等。
标签: c++ algorithm sum dynamic-programming subsequence