当前位置:首页 > C++知识 > 正文内容

【数论】杨辉三角

亿万年的星光3年前 (2023-02-01)C++知识3365

一、起源

 杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(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;
}


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

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

分享给朋友:

相关文章

【数论】同余定理与同余方程

定义同余定理是数论中的一个重要概念。它的定义是这样的:给定一个整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m 得到一个整数,那么就成整数a和b对模m同余,记作a≡b(mod m...

如何判断回文数/回文串

所谓回文,就是从左往右读和从右往左读都是一样的,这样的数字或者字符称为回文数/回文字符。做题的时候经常能看到判断回文操作。判断回文的一般有两种,一种是数字类型,一种是字符类型。两种分别介绍一下。一、回...

指针(三):指针与函数

1.交换的例子#include<iostream> #include<cstdio> #include<cstring> using namespa...

【数论】快速乘

【数论】快速乘

上一篇文章简单说了龟速乘的问题,有人觉得龟速乘还是太慢了,有没有什么办法再快一点,实际是有的,就是我们今天介绍的 快速乘。快速乘的原理和龟速乘不同,快速乘并不是基于二进制和位运算,严格来说,快速乘是利...

01背包问题

问题定义01背包问题是一个经典的组合优化问题,通常描述如下:有个容量为C的背包有n件物品,第i件物品的重量为Wi,价值为Vi每种物品只有一件,可以选择放入背包(1)或不放入背包(0),因此称为“01”...

【数论】二项式定理

【数论】二项式定理

一、基本概念上面这个式子就叫做二项式定理,又称牛顿二项式定理,该定理给出两个数之和的整数次幂诸如展开为类似项之和的恒等式。二项式定理可以推广到任意实数次幂,即广义二项式定理。 初中高中阶段比...