1. 程式人生 > >折紙運算

折紙運算

n) col sys 所有 ava bject [] off system

請把紙條豎著放在桌?上,然後從紙條的下邊向上?對折,壓出折痕後再展 開。此時有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 }

折紙運算