C语言经典递推算法之杨辉三角展开(详解)
文章目錄
- 一、遞推算法
- 二、楊輝三角展開
一、遞推算法
這是一種比較簡單的算法,即通過已知條件,利用特定關系得到中間結論,然后得到最后結果的算法。遞推算法可以分為順推和逆推兩種。
二、楊輝三角展開
1、楊輝三角
- 楊輝三角,是二項式系數在三角形中的一種幾何排列。
- 楊輝三角的性質:
每個數等于它上方兩數之和。
每行數字左右對稱,由1開始逐漸變大。
第n行的數字有n項。
前n行共[(1+n)n]/2 個數。
第n行的m個數可表示為 C(n-1,m-1),即為從n-1個不同元素中取m-1個元素的組合數。
第n行的第m個數和第n-m+1個數相等 ,為組合數性質之一。
2、算法步驟
(1)每個數字等于上一行的左右兩個數字之和??捎么诵再|寫出整個楊輝三角。即第n+1行的第i個數等于第n行的第i-1個數和第i個數之和,這也是組合數的性質之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。
(2)(a+b)n的展開式中的各項系數依次對應楊輝三角的第(n+1)行中的每一項。
(3)將第2n+1行第1個數,跟第2n+2行第3個數、第2n+3行第5個數……連成一線,這些數的和是第4n+1個斐波那契數;將第2n行第2個數(n>1),跟第2n-1行第4個數、第2n-2行第6個數……這些數之和是第4n-2個斐波那契數。
(4)將第n行的數字分別乘以10(m-1),其中m為該數所在的列,再將各項相加的和為11(n-1)
3、C語言實現
#include <stdio.h> #define N 8void main() {int a[N+1][N+1], i, j;for(i=0; i<=N; i++){a[i][i]= a[i][0]= 1;}for(i=2; i<=N; i++){for(j=1; j<i; j++){a[i][j]= a[i-1][j]+ a[i-1][j-1];}}printf("%d 階楊輝三角:\n", N+1);for(i=0; i<=N; i++){for(j=0; j<=i; j++)printf("%4d",a[i][j]);printf("\n"); } }4、算法思想
使用二維數組存放楊輝三角中的數據元素,初始時,將第1列和對角線上的元素初始化為1,即a[i][0]=a[i][i]=1,
然后利用每一行元素值是它上一層兩個相鄰元素之和求其他元素值,即a[i][j]= a[i-1][j]+a[i-1][j-1]。
參考文獻:《The Function and Algorithm of Program Language C/C++》
總結
以上是生活随笔為你收集整理的C语言经典递推算法之杨辉三角展开(详解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞凌嵌入式Android测试
- 下一篇: wamp mysql 环境变量_wind