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日 */
using namespace std;//使用标准命名空间 std
int 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++ 中为 GLSL 片段着色器实现 iGlobalTime?