折纸运算

Posted 上后谈爱情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了折纸运算相关的知识,希望对你有一定的参考价值。

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

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

测试样例:
1
返回:["down"]
 1 package com.offer;
 2 import java.util.*;
 3 public class FoldPaper {
 4 
 5     public static void main(String[] args) {
 6         foldPaper(3);
 7 
 8     }
 9     public static String[] foldPaper(int n) {
10           if(n<=0)
11               return null;
12             ArrayList<String> arr=new ArrayList<String>();
13             
14             getFolder(n,1,arr,true);//先右,后中 最后左顺序
15             String[] res=new String[arr.size()];
16             for(int i=0;i<arr.size();i++)
17             {
18                 res[i]=arr.get(i);
19                 System.out.print(res[i]+" ");
20             }
21             return res;
22             
23         }
24         public static void getFolder(int n,int i,ArrayList<String> str,boolean down)
25         {//类似于中序遍历,先遍历右边,在遍历中间,最后遍历左子树
26             if(i>n)
27                 return;
28             getFolder(n,i+1,str,true);//getFolder(n,i+1,str,root.right)
29             if(down)
30                 str.add("down");
31             else
32                 str.add("up");
33             getFolder(n,i+1,str,false);
34         }
35 }

 

以上是关于折纸运算的主要内容,如果未能解决你的问题,请参考以下文章

树--06---二叉树--03---二叉搜索树(BST)--最大深度问题折纸问题

50种折纸方法

如何在 UITableView 中插入和删除行时模拟折纸

关于折纸的动画

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。