欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

ACM训练:倒杨辉三角形

时间:2023-05-29

题目描述

Fans喜欢图形,而且喜欢把图形倒过来欣赏。有一次,他看见杨辉三角形 了,觉得很新鲜,于是就把它们大大小小地摆布出来。输入一些整数n(1≤n≤10),读入其每个整数,以该整数为行数,其画出来的倒杨辉三角形就是fans所喜欢欣赏的。Fans是手工做的,你却可以用编程更快捷地做出来,多爽啊!

输入

多组数据,每组数据占一行

输出

每个倒杨辉三角参考样例输出,每输出一个后必跟一空行

样例输入

53

样例输出

1 4 6 4 1 1 3 3 1 1 2 1 1 1 1 1 2 1 1 1 1

首先我们需要弄出一个正杨辉三角,以上面的例子为例。

(5)

1

11

121

1331

14641

(3)

1

11

121

利用一个二维数组来求解这个杨辉三角:

int n;int a[n][n];for(int i=0;i

ok了,正杨辉三角就做出来了,但是我们需要的是倒杨辉三角。

不妨倒着输出一下,就可以了。

我们需要在各个元素之间插入空格。

每两个元素之间的间隔为6,实际间隔需要减掉后面那个数的位数。

#include #include int main(){ int n; while(scanf("%d",&n)!=EOF) { int a[n][n]; int temp=0; int wei=0; for(int i=0;i=0;i--) { for(int j=1;j<=((n-i))*3-1;j++) { printf(" "); //用于输出每行前面的空格 } for(int j=0;j<=i;j++) { wei=0; //用来保存数组的位数 printf("%d",a[i][j]); //输出这个值 if(j<=i-1) { temp=a[i][j+1]; //把后面的值拿出来 } else { wei=6; } while(temp!=0) //统计后面值的位数 { wei++; temp=temp/10; } if(j!=i) { for(int i=1;i<=6-wei;i++) //每两个数之间的间隔是6,实际间隔要减掉后面的位数 { printf(" "); } } } printf("n"); } printf("n"); } return 0;}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。