题目描述
打印如下形式的杨辉三角形。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
输入
杨辉三角形阶数
输出
杨辉三角形。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
样例输入
6
样例输出
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
题目分析:
① 杨辉三角形的特点:第一列和对角线上的元素值均为1,即a[i][0]=a[i][i]=1,所以可以先初始化为1的部分;
② 其余位置元素的值=上一行本列元素值+上一行前一列元素值,
如第三行第二列2就是第二行第一列+第二行第二列,计算公式为a[i][j]=a[i-1][j-1]+ a[i-1][j]。
代码实现:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[100][100]={0};
//先对已知为1的位置进行初始化赋值
for(int i=0;i<n;i++)
{
a[i][0]=1;//对这个三角中第一列全赋值为1
for(int j=0;j<i+1;j++)
{
//对对角线位置进行赋值
if(i==j)
{
a[i][j]=1;
}
}
}
//其余位置元素上的值
for(int i=2;i<n;i++)
{
for(int j=1;j<n-1;j++)
{
a[i][j]=a[i-1][j-1]+ a[i-1][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<i+1;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
运行结果:
欢迎批评指正!