58 杨辉三角
作者: xxx时间限制: 1S章节: 二维数组
问题描述 :
还记得中学时候学过的杨辉三角吗?
基本的特征是:
前提:端点的数为1.
-
每个数等于它上方两数之和。
-
每行数字左右对称,由1开始逐渐变大。
-
第n行的数字有n项。
你可以参考以下的图形:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
输入说明 :
输入数据首先包含一个正整数T ( T < 10 ),表示有 T 组测试数据, 每组测试数据只包含一个正整数n(1 <= n <= 20),表示将要输出的杨辉三角的层数。
输出说明 :
对应于每一个输入,请输出相应层数的杨辉三角,输出的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
输出时,每一行的开头的“1”前面不需要空格,结尾的“1”后面也没有空格。
输入范例 :
2
5
8
输出范例 :
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
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
#include <stdio.h>
int main()
{
int t;
while( scanf("%d",&t) != EOF )
{
for(int i=0;i<t;i++)
{
int n;
int a[20][20];
scanf("%d",&n);
for(int j=0;j<n;j++)
{
for(int k=0;k<=j;k++)
{
if(k==0 || k==j)
a[j][k]=1;
else
a[j][k]=a[j-1][k-1]+a[j-1][k];
}
}
for(int p=0;p<n;p++)
{
for(int r=0;r<=p;r++)
{
if(r==0)
printf("%d",a[p][r]);
else
printf(" %d",a[p][r]);
}
printf("\n");
}
printf("\n");
}
}
return 0;
}