问题描述
程序输入说明
行1:一个整数n,n∈[1,20]
程序输出说明
行1-行n:要求的杨辉三角,以空格分隔数字
程序输入样例
4
程序输出样例
1 1 1 1
1 2 3
1 3
1
解题思路:
平常看到的杨辉三角应该是这个样子的:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
这个题目的输出是斜着输出的。我的想法先用一个二维数组,按照下三角存储杨辉三角,
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
然后按照列优先的顺序输出。
代码如下:
#include <stdio.h>
int main()
{
int n;
int a[20][20] = {0};
int i,j;
scanf("%d",&n);
for(i = 0; i < n; i++)
{
a[i][0] = 1;//每行第一个
a[i][(i + 1)/2] = 1;//对角线位置
for(j = 1; j <= i; j++)
{
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
//按列优先输出
for(i = 0; i < n; i++)
{
for(j = i; j < n - 1; j++)
{
printf("%d ",a[j][i]);
}
printf("%d\n",a[j][i]);
}
return 0;
}