小猴爬台階問題

來源:互聯網
上載者:User

標籤:blog   java   os   2014   問題   for   

小猴爬台階問題:

    有一隻小猴很頑皮,喜歡爬台階,但由於小猴太小,所以它只能一步爬1個或2個台階。請計算該小猴所有可能的爬行路徑。


package shuai.study.steps;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;/** * @author shengshu *  */public class MonkeyCrawl {// Get paths, which will be permutatedpublic static Set<String> getPathsSet(int steps) {Set<String> pathsSet = new HashSet<String>();for (int i = 0; i <= steps / 2; i++) {int twoStepSum = i * 2;int oneStepTimes = steps - twoStepSum;StringBuffer pathStringBuffer = new StringBuffer();for (int x = 0; x < oneStepTimes; x++) {// "-" represent one steppathStringBuffer.append("-");}for (int y = 0; y < i; y++) {// "=" represent two stepspathStringBuffer.append("=");}pathsSet.add(pathStringBuffer.toString());}return pathsSet;}// Permutate all possible pathspublic static void permutatePaths(String path, List<String> list) {if (path.length() == 1) {for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i));}System.out.println(path);} else {int index[] = new int[path.length()];for (int i = 0; i < index.length; i++) {index[i] = path.indexOf(path.charAt(i));}for (int i = 0; i < path.length(); i++) {String subPath = path.substring(1, path.length());if (i == index[i]) {list.add("" + path.charAt(0));permutatePaths(subPath, list);list.remove(list.size() - 1);}path = subPath + path.charAt(0);}}}public static void main(String[] args) {// Set steps as 15, or othersSet<String> pathsSet = MonkeyCrawl.getPathsSet(15);Iterator<String> iterator = pathsSet.iterator();while (iterator.hasNext()) {String path = iterator.next();MonkeyCrawl.permutatePaths(path, new ArrayList<String>());}}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.