倒三角形的两种输出方法

倒三角形的两种输出方法思路是先求最大项 即第一行要输出的 数量 也就是等并数列的最后 1 项 2n 1 以它为基准 其后每一项输出 的数量比前一项减 2 输出的空格是 最大 数量 当前行 数量 2

大家好,欢迎来到IT知识分享网。

【题目描述】

输入正整数n≤20,输出一个n层的倒三角形。例如,n=5时输出如下:

 

   

   

     #

【题目来源】

刘汝佳《算法竞赛入门经典  第2版》习题2-3 倒三角形(triangle)

【解析】

输出的三角形本质上是一个等差数列,关键是找到最后一个数与n的关系。首项为1,公差为2,显然第n项等于2n-1。只不过,这个等差数列要倒序输出。

解法一:累加器+公式法

从输出的图形可以看出,每行输出的空格数是递增1的,由此可以利用累加器cnt++输出空格;“#”的输出数量则利用等差数列求第n项的公式求出。

#include<stdio.h> int main(){ int n, cnt=0; scanf("%d", &n); while(n){ for(int i=1; i<=cnt; i++) printf(" "); for(int j=1; j<=2*n-1; j++) printf("#"); printf("\n"); n--; cnt++; } return 0; }

解法二:等差法

思路是先求最大项,即第一行要输出的“#”数量(也就是等并数列的最后1项2n-1),以它为基准,其后每一项输出“#”的数量比前一项减2,输出的空格是(最大#数量-当前行#数量)/2。

#include<stdio.h> int main(){ int n; scanf("%d", &n); for(int i=2*n-1; i>0; i-=2){ for(int k=1; k<=(2*n-1-i)/2; k++) printf(" "); for(int j=1; j<=i; j++) printf("#"); printf("\n"); } return 0; }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/155515.html

(0)
上一篇 2025-02-18 19:33
下一篇 2025-02-18 19:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信