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?
Example
Given an example n=3 , 1+1+1=2+1=1+2=3
return 3
动态规划里思路比较容易理清的一题,要走到第n个台阶有两种选择,要么从第n-1阶走一个台阶上来,要么从第n-2阶走两个台阶上来。
public class Solution { /** * @param n: An integer * @return: An integer */ public int climbStairs(int n) { // write your code here if(n == 0) return 1; if(n == 1) return 1; if(n == 2) return 2; int[] result = new int[n + 1]; result[0] = 1; result[1] = 1; result[2] = 2; for(int i = 3; i <= n; i++) result[i] = result[i - 1] + result[i - 2]; return result[n]; } }