1400: 杨辉三角
时间限制: 1 Sec 内存限制: 128 MB
提交: 156 解决: 44
[提交][状态][讨论版]
题目描述
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
输入
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
输出
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
样例输入
2 3
样例输出
1
1 1
1
1 1
1 2 1
提示
来源
吉首大学软件学院
来源: http://acm.hnust.edu.cn/JudgeOnline/problem.php?id=1400
int A[50],B[50];
void Handle(int N)
{
A[1]=B[1]=1;
for(int i=1;i<=N;i++)
{
B[i]=A[i]=1;
if(i%2)//可以用函数或引用合并代码
{
for(int j=2;j<i;j++) A[j]=B[j-1]+B[j];
for(int j=1;j<i;j++) printf("%d ",A[j]);
printf("%d\n",A[i]);
}
else
{
for(int j=2;j<i;j++) B[j]=A[j-1]+A[j];
for(int j=1;j<i;j++) printf("%d ",B[j]);
printf("%d\n",B[i]);
}
}
putchar('\n');
}
int main(void)
{
//freopen("D:\\test.txt","w",stdout);
int N;
while(~scanf("%d",&N)) Handle(N);
}