平衡两个列表,直到它们的总和相等,并在Python中的两个列表中进行最小交换

平衡两个列表,直到它们的总和相等,并在Python中的两个列表中进行最小交换,第1张

概述a = [70, 30, 33, 23, 4, 4, 34, 95]b = [50, 10, 10, 7] 我试过这个,但我知道这不够准确 if sum(a) > sum(b): a.sort() b.sort() temp = [int(i) for i in a] i=0 while(sum(b) <= sum(temp) and (i <= len(a) -
a = [70,30,33,23,4,34,95]b = [50,10,7]

我试过这个,但我知道这不够准确

if sum(a) > sum(b):   a.sort()   b.sort()   temp = [int(i) for i in a]   i=0   while(sum(b) <= sum(temp)  and (i <= len(a) - 1)):      b.append(a[i])      temp.remove(a[i])      i = i+1    a = [int(i) for i in temp]if sum(b) > sum(a):    a.sort()    b.sort()    temp = [int(i) for i in b]    i=0    while(sum(a) <= sum(temp)  and (i <= len(b) - 1)):        a.append(b[i])        temp.remove(b[i])        i = i+1            b = [int(i) for i in temp]

结果是:

sums = 186,184

列表= [7,70,95,4],[4,50]

必填答案:

总和= 185,185

列表= [7,50,95],70]

解决方法 有些数字需要从a移动到b,有些数字需要从b移动到a.移动的数字集是两个列表中所有数字集的子集.在您的示例中,只有12个数字,这意味着2 ** 12 == 4096个子集.由于数量很少,蛮力方法应该会成功. 总结

以上是内存溢出为你收集整理的平衡两个列表,直到它们的总和相等,并在Python中的两个列表中进行最小交换全部内容,希望文章能够帮你解决平衡两个列表,直到它们的总和相等,并在Python中的两个列表中进行最小交换所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存