You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
这道题可以用 recursive或者DP做,但是recursive 的效率太低了。
public class Solution { public int climbStairs(int n) { /* if(n==1){return 1;} if(n==2){return 2;} return climbStairs(n-1)+climbStairs(n-2); */ int[] numbers=new int[n+1]; numbers[0]=1; numbers[1]=1; for(int i=2; i<=n; i++){ numbers[i]=numbers[i-1]+numbers[i-2]; } return numbers[n]; }}