找出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, combinationsclass 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