Python杨辉三角算法
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def triangles():
n = 1
aboveList = []
while True:
if n == 1:
aboveList = [1]
n = n + 1
yield [1]
if n == 2:
aboveList = [1,1]
n = n + 1
yield [1,1]
newList = []
for x in getMiddleList(aboveList):
newList.append(x)
newList.insert(0,1)
newList.append(1)
aboveList = newList
n = n + 1
yield newList
return 'done' def getMiddleList(aboveList):
newList = []
leftNodeVal=0
n=1
for x in aboveList:
if n == 1:
leftNodeVal = x
else:
newList.append(x+leftNodeVal)
leftNodeVal = x
n += 1
return newList n=0
for t in triangles():
print(t)
n = n + 1
if n == 10:
break
输出结果:
精简后的算法:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def triangles():
l = [1,0]
while True:
yield l[0:-1]
l[1:-1] = [l[i-1]+l[i] for i in range(1, len(l))] n=0
for t in triangles():
print(t)
n = n + 1
if n == 10:
break
Python杨辉三角算法的更多相关文章
- python 杨辉三角 算法实现
def triangles(level): n = 1 L = [] while n <=level: if n <= 2: L.append(1) yield L elif n > ...
- Python之杨辉三角算法实现
学习了廖雪峰的官方网站的python一些基础,里面有个题目,就是让写出杨辉三角的实现,然后我就花了时间实现了一把.思路也很简单,就是收尾插入0,然后逐层按照杨辉三角的算法去求和实现杨辉三角. 附属代码 ...
- python 杨辉三角
前提:端点的数为1. 每个数等于它上方两数之和. 每行数字左右对称,由1开始逐渐变大. 第n行的数字有n项. 第n行数字和为2n-1. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同 ...
- Python杨辉三角
杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的<详解九章算法>一书中出现.在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个 ...
- python 杨辉三角实现逻辑
程序输出需要实现如下效果: [1] [1,1] [1,2,1] [1,3,3,1] ...... 方法:迭代,生成器 def triangles() L = [1] while True: yiled ...
- php写杨辉三角算法
<?phpfunction YangHui($iLine) { for ($i = 0;$i <= $iLine;$i++)//行 { for ($j ...
- python实现杨辉三角
刚刚学python,原来用c++,Java很轻松实现的杨辉三角,现在用python实现,代码是少了,理解起来却不容易啊. 这里主要用到的Python的生成器. 我们都知道Python有列表解析功能,根 ...
- python 生成器生成杨辉三角
用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2* ...
- 算法基础_递归_求杨辉三角第m行第n个数字
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好) ...
随机推荐
- 推荐几个学习Node的网址:
推荐几个学习Node的网址: Nodejs 安装教程 http://jingyan.baidu.com/article/a948d6515d4c850a2dcd2e18.html http://nod ...
- Ubuntu12.04 安装PyCharm
1. 下载 选择Linux Tab,选择下载免费的Community Edition[1].当前版本是3.4 2. 安装PyCharm 按照官网给出的安装指导[2]进行安装. (1) Copy the ...
- ExtJS远程数据-本地分页
背景 一般情况下,分页展示是前端只负责展示,后台通过SQL语句实现分页查询.当总数据量在千条以下,适合一次性查询出符合条件的所有数据,让前端页面负责分页也是一种选择. 实例 现通过ExtJS 4扩展类 ...
- Sass for循环中编译%时报错解决方案
sass功能强大,特别是支持for循环,节省大量开发时间,但是在开发时遇到一个问题,直接使用%时没有问题,当有变量时再加% 单位在编译时报错: 这样没有问题: @for $width from 0 t ...
- 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- XPS 15 9530使用Windows10频繁发生Intel HD Graphics 4600驱动奔溃的一种解决方法
本人使用XPS 15 9530.集成显卡为Intel HD Graphics 4600.操作系统Windows 10 Pro,使用过程当中经常会发生集成显卡奔溃的问题,错误提示如下: Display ...
- Entity Framework访问MySQL数据库的存储过程并获取返回值
一.创建MySql存储过程 1, CREATE PROCEDURE `InsertAlarmInfo`(in businessindex int, in providerindex int, in ...
- UVAoj 11324 - The Largest Clique(tarjan + dp)
题意:给定一个有向图,寻找一个点数最大集合,使得这个集合中的任意两个点 u,v, 都有u->v 或者 v->u 或者u<==>v 思路:首先将强连通分量通过tarjan算法求出 ...
- 【转载】Grunt常用插件介绍
项目名称 grunt-contrib v0.8.0 项目地址 https://github.com/gruntjs/grunt-contrib 项目介绍 此项目是对grunt常用插件的集合,刚接触gr ...
- 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
源地址:http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台: ...