Python实现:杨辉三角思路


 杨辉三角有以下几个特点 :

  1. 每个数等于它上方两数之和。
  2. 每行数字左右对称,由1开始逐渐变大。
  3. 第n行的数字有n项。
  4. 第n行数字和为2n-1
  5. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
  6. 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。
            1
          1   1
        1   2   1
      1   3   3   1
    1   4   6   4   1
  1   5   10  10   5    1    

我的思路是由于第一行只有一个元素1,所以第二行也一定是1。所以重点在计算后面几行输出的数字,先把它输进列表。

由上图可以知道第三行 列表第一个元素[2 ] 是第2行列表第0个元素和第一个元素的和,因为第0个元素一直是1不用管它,所以有l[a]=l[a]+l[a+1],由上一行输出下一行,现在第三行

是[1,2],然后尾部加上一个[1],就可以得到第三行,列表长度也加了一个,依次类推第四行为[1,3,3],而后再加[1],输出第四行,代码实现如下

1 def yanghui(n):
2     l=[1,1]
3     for x in range(1,n):
4         for a in range(x):
5             l[a]=l[a]+l[a+1]
6         l.insert(0,1)
7     return l

后面将每一行按照格式输出即可,

再统一打印

1 x=int(input())
2 a=1
3 b=0
4 print((x-a+1)*‘ ‘,[1])
5 while a<x:
6     b=yanghui(a)
7     print((x-a)*‘ ‘,b)
8     a+=1

比起需要用到生成器的算法更好理解,也有些取巧了,可以作为一种思路

原文地址:https://www.cnblogs.com/xinin0909/p/9515000.html

时间: 2024-10-02 22:01:04

Python实现:杨辉三角思路的相关文章

python 实现杨辉三角(依旧遗留问题)

1 #! usr/bin/env python3 2 #-*- coding :utf-8 -*- 3 print('杨辉三角的generator') 4 def triangles(): 5 6 N=[1] 7 while True : 8 yield N 9 N.append(0) 10 N = [N[i-1]+N[i] for i in range(len(N)) ] 11 12 triangles = triangles() 13 for j in range(10): 14 print

python打印杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列 每个数等于它上方两数之和. 每行数字左右对称,由1开始逐渐变大. 第n行的数字有n项. 第n行数字和为2n-1. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数. 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一. 每个数字等于上一行的左右两个数字之和.可用此性质写出整个杨辉三角.即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一.即 C(n+1,i)=C(n

python中杨辉三角的几种不同实现方式

计算杨辉三角的前n行:如下图所示 第n行有n项,n为正整数,第n行的数字之和为2n-1 方法一: 方法二: 方法三: : 方法四: 方法五: 方法六:

用python实现杨辉三角

def yanghui(lines): currentlst,lastlst,n=[],[],1 if lines<1: return while n<=lines: lastlst=currentlst currentlst=[] for i in range(n): if(i==0): currentlst.insert(0,1) elif(i==n-1): currentlst.insert(i,1) else: currentlst.insert(i,lastlst[i]+lastls

实现杨辉三角的10种解法--体验Python之美

本文收集了使用python实现杨辉三角的多种解法,主要为网上收集,也有一些是自己写的.从中可以体会python编写一个算法的不同思想和Python语法的特点. 杨辉三角是什么?还是度娘吧,看起来像是这样的:                          1                          1   1                           1   2   1                         1   3   3   1               

leetCode 118. Pascal&#39;s Triangle 数组 (杨辉三角)

118. Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [      [1],     [1,1],    [1,2,1],   [1,3,3,1],  [1,4,6,4,1] ] 题目大意: 输入行数,输出如上图所示的数组.(杨辉三角) 思路: 用双vector来处理当前行和下一行. 代码如下: cla

使用脚本打印杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列. 使用shell 和python 打印杨辉三角,比较差异 shell: [email protected]:~# cat triangles.sh #!/bin/bash # Author: xieshengsen # 打印数学杨辉三角 if (test -z $1) ; then read -p "Input Max Lines:" Max else Max=$1 fi i=1 while [ $i -le $Max ] do j=1

python 杨辉三角

1 1 2 1 1 3 1 2 1 4 1 3 3 1 5 1 4 6 4 1 6 1 5 10 10 5 1 7 1 6 15 20 15 6 1 8 1 7 21 35 35 21 7 1 9 1 8 28 56 70 56 28 8 1 10 1 9 36 84 126 126 84 36 9 1 11 1 10 45 120 210 252 210 120 45 10 1 12 1 11 55 165 330 462 462 330 165 55 11 1 13 1 12 66 220

一个超强的杨辉三角python实现方法

廖雪峰Python教程——生成器 有这么一个习题: 练习 杨辉三角定义如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 把每一行看做一个list,试写一个generator,不断输出下一行的list: # -*- coding: utf-8 -*- def triangles(): 在评论里发现这么一个强大的答案: 1 N = [1] 2 while True: 3 yield N 4 N.append(0) 5 N = [N[i-1] + N[i]