【刷题之路】折纸条问题

原创 2016年05月31日 20:36:56

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

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

亲身示范可以发现,第一条折痕为down,之后,每折一次都在每个折痕上面出现一个down,下面出现一个up,可以发现为一个满二叉树结构,所有节点的左子节点为up,右子节点为down

class FoldPaper {
public:
    vector<string> foldPaper(int n) {
        // write code here
        vector<string> res;
        if(n==0) return res;
        buildtree(n-1,res,1);  //调用函数,开始递归,从第一个down子树开始
        res.push_back("down"); //插入头结点,即为第一条折痕
        buildtree(n-1,res,0); //调用函数,开始递归,从第一个up子树开始
        return res;
    }
    void buildtree(int n,vector<string> &res,int flag){ //建立同时遍历满二叉树的过程,其中flag用来掌控左右节点
        if(n==0) return;
        buildtree(n-1,res,1); //从down开始递归
        if(flag==1) res.push_back("down");  //如果flag==1,则插入一个down,如果为0,则插入一个up
        else res.push_back("up");  
        buildtree(n-1,res,0);//从up开始递归
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

判断纸条折痕的上下方向

题目:来自脑客爱刷题 给一个很长很窄的纸条,把纸条竖着放在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开,此时折痕是凹下去的,也就是突起的方向指向纸条的下方; 如果从纸条的下边向上方对折2...
  • bupt8846
  • bupt8846
  • 2014年12月23日 11:21
  • 614

C语言动态规划(6)___传纸条(Vijos P1493)

描述: 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的...
  • y1196645376
  • y1196645376
  • 2014年12月29日 16:56
  • 1711

NYOJ - 传纸条(一)(DP)

传纸条(一) 时间限制:2000 ms  |           内存限制:65535 KB 难度:5 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动...
  • SevenMIT
  • SevenMIT
  • 2013年04月17日 23:52
  • 1174

NOIP2008 提高组 C - 传纸条

上周的队内练习学弟选了这题来做~~当时纠结了很久也没搞出来...一个纸条传下去很好做~~但是两个纸条我当时就是没想通如何来避免后效性..    这道题的DP思想关键就是找到能表示出来的唯一状态......
  • kk303
  • kk303
  • 2011年11月25日 21:25
  • 2931

ACM刷题之HDU————相遇周期(真·打表(素数筛选))

相遇周期 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S...
  • xiaofeng187
  • xiaofeng187
  • 2016年04月07日 17:40
  • 430

【刷题之路】赛马问题

作为一个马场的主人,你要安排你的n匹赛马和另一个马场的n匹马比赛。你已经知道了对方马场的出战表,即参加每一场的马的强壮程度。当然你也知道你自己的所有马的强壮程度。我们假定比赛的结果直接由马的强壮程度决...
  • zyn2609530
  • zyn2609530
  • 2016年06月12日 10:33
  • 246

【刷题之路】跳台阶问题

有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。为了防止溢出,请将结果Mod 1000000007 给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于1...
  • zyn2609530
  • zyn2609530
  • 2016年06月06日 17:02
  • 116

【刷题之路】站队问题

n个人站队,他们的编号依次从1到n,要求编号为a的人必须在编号为b的人的左边,但不要求一定相邻,请问共有多少种排法?第二问如果要求a必须在b的左边,并且一定要相邻,请问一共有多少种排法? 第一问,对...
  • zyn2609530
  • zyn2609530
  • 2016年06月03日 10:00
  • 144

【刷题之路】 涂色问题

你要在一个nxm的格子图上涂色,你每次可以选择一个未涂色的格子涂上你开始选定的那种颜色。同时为了美观,我们要求你涂色的格子不能相邻,也就是说,不能有公共边,现在问你,在采取最优策略的情况下,你最多能涂...
  • zyn2609530
  • zyn2609530
  • 2016年06月12日 10:10
  • 364

程序员常用的刷题网站

1、Lintcode Lintcode.com——LintCode网站是国内较大的在线编程&测评网站。此网站提供各大IT公司的算法面试题类型,行分门别类,由简单到中等,再到难,便于不同水平的程序员进...
  • Winnielyn623
  • Winnielyn623
  • 2017年07月26日 18:20
  • 2761
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【刷题之路】折纸条问题
举报原因:
原因补充:

(最多只允许输入30个字)