一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路:
定义
dp[n][0] 表示跳上第n级台阶时是跳1级上来的
dp[n][1]表示跳上第n级台阶时是跳2级上来的
转义方程:
dp[n][0] = dp[n-1][0] + dp[n-1][1]
dp[n][1] = dp[n-2][0] + dp[n-2][1]
class Solution { public: int jumpFloor(int number) { int dp[number+1][2]; dp[1][0] = 1; dp[1][1] = 0; dp[2][0] = 1; dp[2][1] = 1; for(int i = 3; i <= number; i++){ dp[i][0] = dp[i-1][0] + dp[i-1][1]; dp[i][1] = dp[i-2][0] + dp[i-2][1]; } return dp[number][0] + dp[number][1]; } };