题解 | #超级圣诞树#
超级圣诞树
http://www.nowcoder.com/practice/470d26c9a73e4e17be8cc45cac843423
最开始想平移来实现,没弄成,看了其他人用对称的方法特别好
# 总体是对称的思路,每一行都是对称的
def buildtree(l):
newls = l
length = len(l)
for i in range(length):
# 左右对称,增加中间的空格
newls.append(l[i] + ' '*(2*length-1 - (2*i)) + l[i])
return newls
h = int(input())
ls = ['*','* *','* * *']
# width 表示树枝的最宽的宽度
width = 3*2**(h-1)+3*2**(h-1)-1
# 迭代获得最终的树枝,用列表存储
for i in range(1,h):
newls = buildtree(ls)
ls = newls
# 输出树枝
for i in range(len(ls)):
print(ls[i].center(width))
# 输出树干
for i in range(h):
print('*'.center(width))