文档章节

如何捅破python编程的那层纸之二

黄哥Python培训
 黄哥Python培训
发布于 2015/07/22 12:48
字数 594
阅读 161
收藏 4

如何捅破python编程的那层纸之二

# coding:utf-8

"""

如何捅破python编程的那层纸之二

贴吧上有人问

定义一个函数,名字为sameSums(aList),alist是一个整形list(限定重复元素不超过2个,排除这样的list,元素前后差为1,[4,5,6,7,8])),函数作用是判断能分成两组,使得两组数字的和相等。若可以择返回值是true,若不可以返回值是false。如下例:

sameSums([4, 7, 6, 3]) --> True //4+6 = 10 and 7 + 3 = 10

sameSums([3, 3]) --> True

sameSums([4, 12, 16]) --> True //4+12= 16 and 16

sameSums([5, 1]) --> False

特别提示:这个题目,贪心算法只能计算上面这样的情况。

这个题目,对初学者来说,有点难度,但稍微有点算法基础,编程思路,就不难。

先讲一个故事:二个小孩儿时从树上采板栗,最后合并一堆,分板栗,采集一人选一个的分。

假定人性是贪婪的,第一个先选的人,选最大的,第二个选的人,选次大的,一直循环下去。

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。

也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。

这个题目:先将list从大到小排序,中间设置2个空的list,从大的开始选,下一次选的时候,需要

比较一下和,如果谁的和小,再添加一个,直到最后一个元素。

本文由黄哥python培训,黄哥所写

黄哥python培训试看视频播放地址

https://github.com/pythonpeixun/article/blob/master/python_shiping.md

"""

def sameSums(int_list):

    """黄哥python培训 黄哥所写 qq:1465376564

    >>> sameSums([4, 7, 6, 3])

    True

    >>> sameSums([3, 3])

    True

    >>> sameSums([4, 12, 16])

    True

    >>> sameSums([5, 1])

    False

    """

    new_lst = sorted(int_list, reverse=True)

    list1 = list()

    list2 = list()

    for n in new_lst:

        if sum(list1) < sum(list2):

            list1.append(n)

        else:

            list2.append(n)

    return sum(list1) == sum(list2)

if __name__ == "__main__":

    import doctest

    doctest.testmod()

    lst = [3, 9, 10, 30, 8]

    print sameSums(lst)


© 著作权归作者所有

黄哥Python培训
粉丝 39
博文 21
码字总数 14219
作品 0
海淀
私信 提问
如何捅破python编程的那层纸之三

coding:utf-8 """ 如何捅破python编程的那层纸之三 贴吧上有人问 定义一个函数,名字为sameSums(aList),alist是一个整形list,函数作用是判断能分成两组,使得两组数字的和相等。若可以择返...

黄哥Python培训
2015/07/23
168
0
运维如何通过学习python学会编程

运维如何通过学习python学会编程 运维必须懂开发,特别是python开发,已经形成大家的共识,不懂开发的运维,路会越走越窄。 黄哥,从2012年底,从事python教学过程中,接触到很多运维的朋友。...

黄哥Python培训
2016/03/01
228
0
如何捅破python编程的那层纸

如何捅破python编程的那层纸 一些朋友自学python过程中,发现书也能看懂,书上的玩具代码也能看懂,但为啥自己不能做习题,不能写代码解决问题,自己不能动手写代码?原因是初学者没有学会计...

黄哥Python培训
2015/02/10
1K
0
黄哥通过代码来说明:python语法糖

下面用一个例子来说明: #coding:utf-8 """ foo = decorator(foo) 语句的作用是将foo函数作为参数传递到decorator 返回值赋值给foo ,那么foo不再是原来的函数了 为了简化代码,python添加了...

黄哥Python培训
2015/11/13
452
0
异步社区本周(4.23-4.29)半价电子书

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 《R语言编程指南》 任坤 著 点击封面购买纸书 R 语言是从事数据科学和统计学需要的工具之一。强大且复杂的 R 对于初学...

异步社区
2018/04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

可见性有序性,Happens-before来搞定

写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO ...

tan日拱一兵
19分钟前
2
0
网络七层模型与TCP/UDP

为了使全球范围内不同的计算机厂家能够相互之间能够比较协调的进行通信,这个时候就有必要建立一种全球范围内的通用协议,以规范各个厂家之间的通信接口,这就是网络七层模型的由来。本文首先...

爱宝贝丶
22分钟前
2
0
Jenkins World 贡献者峰会及专家答疑展位

本文首发于:Jenkins 中文社区 原文链接 作者:Marky Jackson 译者:shunw Jenkins World 贡献者峰会及专家答疑展位 本文为 Jenkins World 贡献者峰会活动期间的记录 Jenkins 15周岁啦!Jen...

Jenkins中文社区
40分钟前
8
0
杂谈:面向微服务的体系结构评审中需要问的三个问题

面向微服务的体系结构如今风靡全球。这是因为更快的部署节奏和更低的成本是面向微服务的体系结构的基本承诺。 然而,对于大多数试水的公司来说,开发活动更多的是将现有的单块应用程序转换为...

liululee
54分钟前
7
0
OSChina 周二乱弹 —— 我等饭呢,你是不是来错食堂了?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 自行车丢了:给主编推荐首歌 《クリスマスの夜》- 岡村孝子 手机党少年们想听歌,请使劲儿戳(这里) @烽火燎原 :国庆快来,我需要长假! ...

小小编辑
今天
625
11

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部