最近我一直在解决一个问题,程序是用变量height来“绘制”(使用ASCII空格和星号)三个向下的三角形和两个向上的三角形,这个变量可以根据用户的意愿改变它们的高度,使它们形成如下形状:
*****************************
******* ******* *******
***** ***** *****
*** * *** * ***
* *** * *** *
***** *****
******* *******
*******************
(when user selects the height variable = 5)和:
*****************************************
*********** *********** ***********
********* ********* *********
******* * ******* * *******
***** *** ***** *** *****
*** ***** *** ***** ***
* ******* * ******* *
********* *********
*********** ***********
****************************
(when user selects the height variable = 7)诸若此类。
我确实解决了这个问题,因为暴力方法非常简单,但我意识到这是多么糟糕的优化。我所做的是将它分成三个部分:三个第一行,中间和最后三行。然后,我们在第一行绘制6*height-1星号,在第二行打印一个空格,然后使用第二行的星号对( (3 *height-3星号),(3个空格))循环三次,在第三行绘制三个空格和略微修改的星号对,然后改变方法(因为我们现在也必须考虑向上的三角形)作为中心,依此类推。它工作得很好,但长话短说,它有很多很多的循环。
今天,在课堂上讨论这个问题时,我的解决方案被接受了,但教授提到,所有这些都可以通过一个循环来完成。这让我开始思考,因为我想不出任何方法来绘制如此不规则的形状,只有一个循环。这看起来不像是通过简单地打印"*“就可以完成的,因为这里似乎没有一个坐标相等。你能帮我弄一下这个吗?真的有什么东西可以用一个循环就能画出来吗?
发布于 2013-11-22 08:50:20
而不是
3 times
top row
height - 3 times
center row
3 times
bottom row你可以做到
height + 3 times
if 3 top rows
top row
else if 3 bottom rows
bottom row
else
center rowhttps://stackoverflow.com/questions/20134839
复制相似问题