题目:
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?
分析:
- 采用动态规划思想
- 将上楼过程分解为,"先上n-1梯,再上1梯" 和"先上n-2梯,再上2梯"这两个过程。
代码:
public static int climbStairs(int n) { switch(n){ case 1: return 1; case 2: return 2; default: int[] arrResult = new int[n+1]; arrResult[0] = 1; arrResult[1] = 1; arrResult[2] = 2; for(int i = 3;i <= n;i++){ arrResult[i]=arrResult[i-1]/*最后剩一个楼梯*/ + arrResult[i-2] /*最后剩两个楼梯*/; } return arrResult[n]; } }