首页 > 编程语言 > 详细

算法题 22 折纸问题 (牛客网,今日头条)

时间:2018-08-30 13:12:39      阅读:208      评论:0      收藏:0      [点我收藏+]

链接: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))

 

算法题 22 折纸问题 (牛客网,今日头条)

原文:https://www.cnblogs.com/yanmk/p/9559549.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!