C++编程:杨辉三角

Posted 人工智能与编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++编程:杨辉三角相关的知识,希望对你有一定的参考价值。


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

百度百科


性质之一:每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)

C++程序实现

/* question:杨辉三角 ** author:刘晓武** date:2021年3月18日 */#include<iostream> //cin、cout智能输入输出语句必须 #include<fstream> //fout输出语句必须 #include<iomanip> //setw()列宽控制函数必须 using namespace std;//使用标准命名空间 stdint main(){ ifstream fin("yanghui.in"); ofstream fout("yuanghui.out"); int n; fin>>n;//从文件中读取数据  int arr[n-1][n-1];//定义一个二级数组(未初始化)  for(int i=0;i<n;i++){ arr[i][0]=1;  arr[i][i]=1; //上面两句已经将每一行首尾的数赋值,所以  //下面的循环变量j从1开始  for(int j=1;j<i;j++){ arr[i][j]=arr[i-1][j-1]+arr[i-1][j]; /* i表示行,j表示列, arr[i][j]表示这个三角形上的每一个位置的数字  根据杨辉三角的性质之一,以下关系方程表示: 当前位置的数(arr[i][j])= 上一行的当前位置减1的位置的数(arr[i-1][j-1]) +  上一行的当前位置的数(arr[i-1][j]) */  } } for(int i=0;i<n;i++){ for(int j=0;j<=i;j++){ cout<<setw(4)<<arr[i][j]<<" ";//输出到控制台(console)  fout<<setw(4)<<arr[i][j]<<" ";//输出结果到文件  } cout<<"\n";//在控制台中每一行的结束输出一个换行符  fout<<"\n";//在文件中每一行的结束输出一个换行符  } return 0;}

程序运行效果:


以上是关于C++编程:杨辉三角的主要内容,如果未能解决你的问题,请参考以下文章

c++输出三角形

C语言 c++ 编程 转换

c++编写程序输出五行的杨辉三角

如何在 C++ 中为 GLSL 片段着色器实现 iGlobalTime?

C++编程练习:抽象类——编写一个程序,计算三角形正方形的面积,抽象出一个基类base。

为啥保守光栅化无法为某些三角形调用片段着色器?