转载:http://www.52harry.com/program/qtprogram/2011-10-13/230.html
人人笔试1:一个人上台阶可以一次上1个,2个,或者3个,问这个人上n层的台阶,总共有几种走法?
import java.util.ArrayList; public class 上楼梯 { public static void Stragy(int[] StarNumOneStep, int MaxStep){ Stragy_(StarNumOneStep, MaxStep, new ArrayList<Integer>()); } public static void Stragy_(int[] StarNumOneStep, int LeftStep, ArrayList<Integer> result){ if(LeftStep == 0){ Util.print(result); }else{ for(Integer i : StarNumOneStep){ if(LeftStep - i >= 0){ result.add(i); Stragy_(StarNumOneStep, LeftStep-i, result); } } } if(result.size() != 0){ result.remove(result.size() -1); } } public static void main(String[] args) { int MaxStep = 12; int[] StarNumOneStep = new int[]{1,2,3}; Stragy(StarNumOneStep, MaxStep); } }