找出Python中最大的K可整除子序列和的程序
假设我们给出了一个非负数的列表,以及一个正值k。我们必须找到数字的最大和子序列,以使和可被k整除。
因此,如果输入为nums=[4、6、8、2],k=2,则输出为20。
整个数组的总和为20,可被2整除。
为了解决这个问题,我们将遵循以下步骤-
numsSum:=输入列表nums中的值之和
余数:=numsummodk
如果余数等于0,则
返回numsSum
排序列表编号
对于每个数字组合tpl(以num为单位)。做
返回numsSum-subSeqSum
subSeqSum:=sum(tpl)
如果subSeqSummodk与余数相同,则
返回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
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短