随笔记录
算法-二叉树-折纸问题
2022-4-11 diaba
package com.jiucaiyuan.net.algrithm.tree;

/**
* <pre>
* 【问题】折纸问题
* 【题目】请把一张纸条竖着放在桌子上,然后把纸条从下面向上方对这一次,压出折痕后展开,
* 此时折痕是凹下去的,即折痕凸起的方向指向纸条的背面;
* 如果从纸条的下方向上连续的折2次,压出折痕后展开,此时有三条折痕,
* 从上到下依次是下折痕、下折痕和上折痕;给定一个输入参数n,
* 表示纸条都从下边向上连续对着n次,请从上到下打印所有折痕方向。
* 例如:n=1时,打印:down;n=2时,打印:down down up
*
* 【思路】经过多次对折操作,画出折痕及方向,总结出来,类似于一个二叉树,所以是二叉树的中序遍历
* </pre>
*
* @Author jiucaiyuan 2022/4/11 23:41
* @mail services@jiucaiyuan.net
*/

public class PaperFolding {


public static void printAllFold(int n) {
printProcess(1, n, true);
}

/**
* @param time 折次数
* @param n 总共折几次
* @param isDown 当前是凹么?
*/
private static void printProcess(int time, int n, boolean isDown) {
if (time > n) {
return;
}
printProcess(time + 1, n, true);
System.out.println(isDown ? "凹" : "凸");
printProcess(time + 1, n, false);
}

public static void main(String[] args) {
int times = 3;
printAllFold(times);
}

}
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容