【发布时间】:2013-11-22 00:41:57
【问题描述】:
最近我一直在解决一个问题,程序要“绘制”(使用 ASCII 空格和星号)三个向下指向和两个向上指向的三角形,变量 height 根据用户的意愿改变它们的高度它们形成以下形状:
*****************************
******* ******* *******
***** ***** *****
*** * *** * ***
* *** * *** *
***** *****
******* *******
*******************
(when user selects the height variable = 5)
和:
*****************************************
*********** *********** ***********
********* ********* *********
******* * ******* * *******
***** *** ***** *** *****
*** ***** *** ***** ***
* ******* * ******* *
********* *********
*********** ***********
****************************
(when user selects the height variable = 7)
等等。
我确实解决了这个问题,因为蛮力方法非常简单,但我意识到这是多么糟糕的优化。我所做的是将它分为三个部分:前三行、中间三行和最后三行。然后,我们在第一行绘制 6*height-1 星号,在第二行打印一个空格,然后用对 ((3*height-3 星号), (3 个空格)) 循环三次在第二行中,第三行中的三个空格和稍微修改的对,然后改变方法(因为我们现在也必须考虑向上的三角形)中心等等。它运作良好,但它有很多很多循环,长话短说。
今天,在课堂上讨论这个问题时,我的解决方案被接受了,但教授提到所有这些都可以通过一个循环来完成。它只是让我思考,因为我想不出任何方法可以绘制出如此不规则的形状,而只有一个循环。看起来不能通过简单地打印“*”来完成某些坐标相等性,因为这里似乎没有。你能帮我解决这个问题吗?真的有什么东西可以用一个循环画出来吗?
【问题讨论】:
标签: optimization