Python實現:楊輝三角思路


 楊輝三角有如下幾個特色 :算法

  1. 每一個數等於它上方兩數之和。
  2. 每行數字左右對稱,由1開始逐漸變大。
  3. 第n行的數字有n項。
  4. 第n行數字和爲2 n-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。因此重點在計算後面幾行輸出的數字,先把它輸進列表。ui

由上圖能夠知道第三行 列表第一個元素[2 ] 是第2行列表第0個元素和第一個元素的和,由於第0個元素一直是1不用管它,因此有l[a]=l[a]+l[a+1],由上一行輸出下一行,如今第三行spa

是[1,2],而後尾部加上一個[1],就能夠獲得第三行,列表長度也加了一個,依次類推第四行爲[1,3,3],然後再加[1],輸出第四行,代碼實現以下code

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

    後面將每一行按照格式輸出便可,blog

再統一打印get



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

比起須要用到生成器的算法更好理解,也有些取巧了,能夠做爲一種思路input

相關文章
相關標籤/搜索