加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

续如何捅破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)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读