找出Python中最大的K可整除子序列和的程序

假设我们给出了一个非负数的列表,以及一个正值k。我们必须找到数字的最大和子序列,以使和可被k整除。

因此,如果输入为nums = [4、6、8、2],k = 2,则输出为20。

整个数组的总和为20,可被2整除。

为了解决这个问题,我们将遵循以下步骤-

  • numsSum:=输入列表nums中的值之和

  • 余数:= numsum mod k

  • 如果余数等于0,则

    • 返回numsSum

  • 排序列表编号

  • 对于每个数字组合tpl(以num为单位)。做

    • 返回numsSum-subSeqSum

    • subSeqSum:= sum(tpl)

    • 如果subSeqSum mod k与余数相同,则

  • 返回0

让我们看下面的实现以更好地理解-

示例

from itertools import chain, combinations

class Solution:

   def solve(self, nums, k):

      numsSum = sum(nums)

      remainder = numsSum % k

      if remainder == 0:

         return numsSum

      nums.sort()

      for tpl in chain.from_iterable(combinations(nums, r) for r in range(1, len(nums) + 1)):

         subSeqSum = sum(tpl)

         if subSeqSum % k == remainder:

            return numsSum − subSeqSum

      return 0

ob1 = Solution()

print(ob1.solve([4, 6, 8, 2], 2))

输入值

[4, 6, 8, 2], 2
输出结果
20

以上是 找出Python中最大的K可整除子序列和的程序 的全部内容, 来源链接: utcz.com/z/337963.html

回到顶部