链接:https://www.nowcoder.com/questionTerminal/430180b66a7547e1963b69b1d0efbd3c
来源:牛客网

请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕
;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。

给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为”down”,若为上折痕则为”up”.

测试样例:
1
返回:["down"]

解题思路:实现先后再中,最后左的中序遍历即可得到所有折痕的打印顺序。(特殊的中序遍历)

解题代码:

# -*- coding:utf-8 -*-

class FoldPaper:
    def foldPaper(self, n):
        # write code here
        res=[]
        def inOrder(n,pos):
            if n<=0:
                return
            inOrder(n-1,\'order\')
            if pos==\'order\':
                res.append(\'down\')
            else:
                res.append(\'up\')
            inOrder(n-1,\'re_order\')
        inOrder(n,\'order\')
        return res




if __name__=="__main__":
    print(FoldPaper().foldPaper(3))
    print(FoldPaper().foldPaper(2))
    print(FoldPaper().foldPaper(1))
    print(FoldPaper().foldPaper(0))

 

版权声明:本文为yanmk原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yanmk/p/9559549.html