题目描述
给出 n(n≤20)
,输出杨辉三角的前 n
行。
杨辉三角规则:
- 每个数等于它上方两数之和。
- 每行数字左右对称,由1开始逐渐变大。
- 第 n 行的数字有 n 项。
- 前 n 行共
2(1+n)n
个数。 - 每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第
n+1
行的第i
个数等于第n
行的第i−1
个数和第i
个数之和,这也是组合数的性质之一。即C(n+1,i)=C(n,i)+C(n,i−1)
。
输入格式
输入小于 20 的正整数。
输出格式
按顺序输出前 n 阶杨辉三角数值,每行每个数之间用空格隔开。
输入输出样例
输入
6
输出
1 1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
说明
注意答案输出时,每一行使用换行符隔开,同一行的各个数之间用空格隔开,每行最后一个数之后不要添加空格。
#include <stdio.h>
int main()
{
int i,j;
int a[10][10];
printf("\n");
for(i=0;i<10;i++) {
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<10;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<10;i++) {
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}