题解 | #超级圣诞树#

超级圣诞树

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))
全部评论

相关推荐

2 1 评论
分享
牛客网
牛客企业服务