
这是上海市计算机学会2022年7月丙组的压轴题和之前蓝桥杯的大题一模一样。
不过,之前在csdn上看了很多,都java做的(互相抄的吧~)看懂之后,就用自己熟悉的语言再做一次!
这道题看着复杂,不过图形打印题,无非是for循环的嵌套使用,最最关键的是找到行和图案的关系。然后,找关系后,还要看看对称性。对称性可以帮助我们省略很多代码。
这道题,六芒星,看着复杂,但是分解以后实际上是由几个三角形组合而成的。而且边长就是4

经过观察,第3行,第5行*后有空格(包括对称)其它都 空格+‘*’ 这样的结构。
第一行的*前有9个空格;n*2+1
第二行前8个空格,*后1个空格;第三行前7个空格,*后3个空格;即,2到n-1行;
这个地方困扰我很久,后来发现大部分*都是后面伴随空格。如果第三行(n-1行)的3个空格看作一个*伴随一个空格,另一个星前面空2格,(2*row-2)好处理很多。
第四(n)行 这里6n-5是参考的。
首先这根6n-5的线是怎么来的?
从上面的图可以看到,这根线由三个边长为n的三角形的边长组成. 所以应该是3n,但是因为中间那个三角形有两个点被覆盖了,所以需要减2. 就是 3n - 2.
这是这条线上所有的星星的数量,但是它的星星的排列是一个星星一个空格的形式,所以我们还得把空格计算出来.
我们可以看到左边,中间,右边三个三角形的空格数量都是n - 1,加一起就是3n - 3

本文介绍如何使用C++解决蓝桥杯中的一道图形打印题——打印六芒星。通过对图形的观察和分析,利用for循环的嵌套,找到行与图案的关系以及对称性,简化代码。关键在于理解六芒星由多个三角形组成,通过计算行数与空格、星号的关系确定打印模式。
最低0.47元/天 解锁文章
1052

被折叠的 条评论
为什么被折叠?



