链接:变态跳台阶
题目详情:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:
状态:dp[n]:表示n级台阶跳法
转移方程:dp[n] = dp[n-1]+dp[n-2]+…+dp[1]+1
这里有两种推法:
1,
由于dp[n-1]=dp[n-2]+…+dp[1]+1
所以dp[n] = dp[n-1] + dp[n-1] = 2 * dp[n-1],(dp[1] = 1)
2,
不断把dp[n-1]展开:
dp[n] = dp[n-1]+…+dp[1]+1
= 2*(dp[n-2]+…+dp[1]+1)
= 2^2*(dp[n-3]+…+dp[1]+1)
= …
= 2^(n-2)*(dp[1]+1)
= 2^(n-2)*2
= 2^(n-1)