小猴爬台阶问题
来源:互联网 发布:linux qq rpm最新版 编辑:程序博客网 时间:2024/05/20 18:46
小猴爬台阶问题:
有一只小猴很顽皮,喜欢爬台阶,但由于小猴太小,所以它只能一步爬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>());}}}
1 0
- 小猴爬台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 台阶问题
- 走台阶问题算法
- Nubia Z5S(高通MSM8974) QHSUSB_BULK模式救砖方法(以win7下恢复recovery分区为例)
- 递归扫描(广搜)
- android 中一个工程引用另一个工程
- java设计模式之单例模式
- 从程序员到项目经理(二)
- 小猴爬台阶问题
- BetterExplained 为什么你应该(从现在开始就)写博客
- [Java]JMX
- cocos2d-x: 死磕"HelloWorld"(3)——游戏运行主函数run()
- 告别程序员生涯,一点感慨,与诸君共勉(转CSDN)
- Ubuntu 安装wireshark启动
- HTTP服务器典型错误码
- Longest Consecutive Sequence
- UnityVS的开发商SyntaxTree被微软收购 今后开放下载