牛客网 在线编程 折纸问题
生活随笔
收集整理的這篇文章主要介紹了
牛客网 在线编程 折纸问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
請把紙條豎著放在桌?上,然后從紙條的下邊向上?對折,壓出折痕后再展 開。此時有1條折痕,突起的?向指向紙條的背?,這條折痕叫做“下”折痕 ;突起的?向指向紙條正?的折痕叫做“上”折痕。如果每次都從下邊向上? 對折,對折N次。請從上到下計算出所有折痕的?向。
給定折的次數n,請返回從上到下的折痕的數組,若為下折痕則對應元素為"down",若為上折痕則為"up".
測試樣例:
1 返回:["down"]—————————————————————————————————————————————————————————
可以把它想象成一個滿二叉樹的中序遍歷問題。每一次對折都會使得原先已有的折痕衍生出兩個新的折痕,上面的為下折痕,下面的為上折痕。但不需要構建二叉樹,用遞歸但形式加上一些條件參數即可完成。
import java.util.*;public class FoldPaper {public static String[] foldPaper(int n) {String res = foldPaper(n, "left");return res.substring(1).split(" ");}public static String foldPaper(int n, String flag) {if (n==1) {if (flag.equals("left")) {return " down";}else {return " up";}}else {if (flag.equals("left")) {return foldPaper(n - 1, "left") + " down" + foldPaper(n - 1, "right");}else {return foldPaper(n - 1, "left") + " up" + foldPaper(n - 1, "right");}}} }?
總結
以上是生活随笔為你收集整理的牛客网 在线编程 折纸问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十种排序算法的java汇总
- 下一篇: 牛客网 在线编程 局部最小值位置