续如何捅破python编程的那层纸之三
发布时间:2020-05-25 01:06:38 所属栏目:Python 来源:互联网
导读:续如何捅破python编程的那层纸之三
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 # coding:utf-8
import itertools
def sameSums1(int_list):
if len(int_list) == 1:
# 列表只有一个元素必不能等分两组
return False
sum_of_lsit = sum(int_list)
halfsum = sum_of_lsit / 2
if sum_of_lsit % 2:
# 和为奇数不可等分
return False
int_list.sort(reverse=True)
for i in xrange(1,len(int_list)/2 + 1):
if sum(int_list[:i]) < halfsum:
# 若最大的前N位之和不足半值就不必检测N位组合的各种方案了
continue
elif sum(int_list[:i]) == halfsum:
# 若恰巧是半值就直接返回
return tuple(int_list[:i])
for subset in itertools.combinations(int_list,i):
sumsub = sum(subset)
if sumsub == halfsum:
# 找到就结束
return subset
if __name__ == "__main__":
import doctest
doctest.testmod()
import time
lst1 = [3,9,10,30,8]
lst2 = [4,5,6,7,8]
lst3 = [2,2,3,3]
lst4 = [10,8,1]
lst5 = [74,80,40,38,68,58,91,65,75,88,47,84,30]
lst6 = [97,87,96,24,12,98,85,99,67,49,86,83,28,57,90,62,93,23]
lst7 = [93,94,36,4,54,69,64,19,21,53,46,82,78,20,45,27,72,48,49]
t0 = time.time()
print sameSums1(lst1)
print sameSums1(lst2)
print sameSums1(lst3)
print sameSums1(lst4)
print sameSums1(lst5)
print sameSums1(lst6)
print sameSums1(lst7)
t1 = time.time()
print t1 - t0
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
