下面是编程之家 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)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。