Python算法--计数初步
来源:互联网 发布:qt程序员常用单词 编辑:程序博客网 时间:2024/05/29 09:18
1.sum求和
>>> x=2>>> sum(x*y for y in range(1,101))10100>>> 5050*210100>>> sum(i for i in range(1,101))5050>>> sum(3+i for i in range(1,101))5350
>>> sum(3+i for i in range(1,101))+sum(4*i for i in range(1,101))25550>>> sum(3+i+4*i for i in range(1,101))25550
2.两种赛制的故事:
循环赛:每一个选手都会被安排轮流与其他人比上一回。问题,在n个骑士的格斗比赛中,需要安排多少配对或赛程呢?
对循环赛的理解,可以理解为开会的一群人中每个人都要和别人握手,或者完全图中的边的数量。
答案为n(n-1)/2,确实是:
其他思路:第一位骑士的对手数应该是n-1,第二位骑士的对手数就是n-2了。这样一直推下去,一直到最后那位骑士(他只剩下0场比赛和0个骑士对手了)这样,我们就可以得出它们的求和式:n-1+n-2+...+1+0=n(n-1)/2。若n=100,则需要
>>> sum(i for i in range(100))4950这么多场比赛~~
淘汰赛:参赛者则通常是被安排成对比赛的,只有每对当中的赢者才能进入下一轮比赛。问题,对于n个骑士来说,我们需要多少轮比赛,需要进行多少场比赛?
2.龟兔赛跑:
淘汰赛:考虑,在首轮比赛中,由于所有骑士都要参与配对,所以应该会有n/2场比赛。而进入第二轮比赛的人数只有原来的一半,因而这一轮的比赛场次应该为n/4。如此以此类推下去,一直到最后一轮比赛,比赛的总场次应该合计为n/2+n/4+n/8+...+1
由于每一场比赛都会有一名骑士被淘汰,所以最终除冠军以外的所有人都会被淘汰(并且他们都是一次性淘汰),所以我们需要n-1场比赛来决定只留下哪一个人。
比赛结构如下图所示,这是一棵带跟的树结构,其每一片叶子是一个骑士,内部各节点(包括根节点)代表一场比赛。一共n个叶子和n-1个内部结点。
该比赛轮次的上限应为h-1(或者该二叉树的高度是h,所以2的h次方=n)
猜数游戏:
>>> from random import randrange>>> n=10**90>>> p=randrange(10**90)>>> p<n/2True>>> p<n/4False>>> n/4<p<3*n/8False>>> from math import log>>> log(n,2)298.9735285398626p是未知的,让我们只能问问题,回答者只能回答yes/no。问多少个问题可以猜出p的大小。
我们可以持续成倍缩小其可选范围,大致在300个问题之内就能找到答案。
(这是一种所谓超理想对数算法的一个典型示例)
这其实是二分法或二分搜索法的一个实例,也是最重要、最知名的一种对数算法。
指数级算法的例子:
小麦与棋盘的问题:在棋盘的第一个方格放一颗小麦,第二个方格放两颗,第三个方格放四颗,以此类推,最后会有多少小麦呢?
一共有64个方格。最后一个方格中应该放2的63次方个。2的64次方–1 = 18,446,744,073,709,551,615。
从1到n的翻倍数与从n到1的减半数是相同的。
- Python算法--计数初步
- 算法导论计数排序python实现
- 计数算法
- Python实现各类数据结构和算法---计数排序
- Python 数据结构与算法——引用计数
- 算法研究:利用Python解决数学计数原理问题
- 算法导论程序15-计数排序(Python)
- python初步
- python初步
- python初步
- python 初步
- python初步
- 《算法初步》
- 算法初步--什么是算法
- Python中的引用计数
- python的引用计数
- python学习:counter计数
- Python实现计数排序
- C语言中的 linux 信号
- HDOJ 1068 Girls And Boys (最大独立集数)
- 消息中间件RabbitMQ 初探
- JPush极光推送Java服务器端实例
- [vim]怎样记忆 进入编辑模式的按键
- Python算法--计数初步
- HtmlUnit自动填写表单并提交
- phono 问题
- JAVA实现图片叠加效果
- uva12657 Boxes in a Line 双向链表
- C# StringBuilder
- 用 easyui ajax 写 http 测试客户端
- Spark-sql结果保存指定位置
- Mozilla 17年最新计划,发展健康的互联网