解题思路 青蛙跳到第n层台阶可以通过两种途径: 青蛙跳到第n-2层台阶上,然后跳2级青蛙跳到第n-1层台阶上,然后跳1级 所以使用动态规划,且仅需保留n前面的两个值,转移方程:f(n)=f(n-1)+f(n-2) 代码 class Solution { public: int numWays(int n) { if(n==0) return 1; int dp[2]={1,2}; while(--n){ int tmp=(dp[0]+dp[1])%1000000007; dp[0]=dp[1]; dp[1]=tmp; } return dp[0]; } };