当前位置:首页 > C++目录 > 正文内容

【数论】杨辉三角

亿万年的星光3年前 (2023-02-01)C++目录3973

一、起源

 杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。

可以看出,它与上节课讲的二项式系数一样。


二、特点

  • 每个数等于它上方两数之和。

  • 每行数字左右对称,由1开始逐渐变大。

  • 第n行的数字有n项。

  • 前n行共[(1+n)n]/2 个数。

  • 第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,i)+C(n,i-1)。

  • (a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。

  • 将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。

  • ……



三、实现方式

二维数组实现:

#include<bits/stdc++.h>
using namespace std;
#define N 100
int main() 
{
	int a[N][N];
	int n,i,j; 
	cin>>n;
	for(i=1;i<=n;i++)
	 for(j=1;j<=i;j++)
	 {
	 	if(j==1||j==i)//该行的第一个和该行的最后一个数据都是1 
	  		a[i][j]=1;
		else	  
	  		a[i][j]=a[i-1][j-1]+a[i-1][j];//杨辉三角基本公式
	 }
	 //下面为输出数据 
	 	for(i=1;i<=n;i++)
	 	{
	 		for(j=1;j<=i;j++)
	 		{
	 			cout<<a[i][j];
		  	}
		  cout<<endl;
	 	}
 		return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    STL入门——容器3:map

    一、定义    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据&nb...

    【算法】扩展欧几里得算法

    一、欧几里得算法我们前面学过求最大公约数的算法:欧几里得算法(又叫辗转相除法) ,一般缩写是gcd,在C++中经常写成如下形式:int gcd(int a,int b)...

    图的访问与遍历-深度优先搜索

    图的访问与遍历-深度优先搜索

    一、图的遍历图的遍历是指从图中的某个顶点出发,按照一定规则访问图中所有顶点且每个顶点仅访问一次的过程,核心分为深度优先搜索(DFS) 和广度优先搜索(BFS) 两大类,适用于无向图...

    深搜剪枝技巧

    一、什么是剪枝     首先应当明确的是,“剪枝”的含义是什么。我们知道,搜索的进程可以看作是从树根出发,遍历一棵倒置的树——搜索树的过程。而所谓剪枝,顾名思义...

    【数据结构】栈(Stack)的介绍

    栈是只能在某一端插入和删除的特殊线性表。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表(LIF...

    【数据结构】栈—表达式括号匹配

    【数据结构】栈—表达式括号匹配

    【题目描述】假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则...