剑指offer-变态跳青蛙-DP
2017-02-11 15:22
232 查看
问题
题目:[变态跳青蛙]思路
和之前分析思路一样。记F为调到第N层的方法。
对于第N-1层,可以1步跳过来。此时有F[N-1]种方法。
对于第N-2层,可以2步跳过来,此时有F[N-2]种方法。
…
对于第1层而言,可以N-1步跳过来,此时有F[1]种方法。
对于第0层而言,可以N步跳过来,此时有1种方法
F[N]=$F[N−1]+F[N−2]+...+F[1]+F[0](1)
其中,F[0] = 1.
代码
class Solution { public: int jumpFloorII(int number) { std::vector<int> dp(number+1, int()); dp[0] = 1; for(int i = 1; i <= number; ++i){ for(int j = 0; j< i; ++j){ dp[i] += dp[j]; } } return dp[number]; } };
思路
我对台阶数还有一点疑问,其实1阶和2阶没有问题。当三阶之后,每次都可以从0阶一步跳上来。多了一种情形。
class Solution { public: int jumpFloorII(int number) { std::vector<int> dp(number + 1); dp[1] = 1; dp[2] = 2; for(int i = 3; i <= number; ++i){ for(int j = 1; j < i; ++j){ dp[i] += dp[j]; } ++dp[i]; // 从0阶直接跳上来 } return dp[number]; } };
相关文章推荐
- Java 剑指offer之 递归青蛙跳、变态青蛙跳
- 剑指offer之青蛙变态跳台阶
- 剑指offer 面试题9 斐波那契数列/青蛙跳台阶/矩形覆盖/变态跳台阶
- 剑指offer-青蛙变态跳台阶
- C++,剑指offer青蛙变态跳台阶
- 【剑指offer】之青蛙跳台阶
- 剑指offer :变态跳台阶
- 变态跳台阶(剑指Offer 第 9 题)
- 【剑指offer】变态跳台阶
- 剑指offer-----青蛙跳台阶问题(1)
- 剑指Offer - 九度1389 - 变态跳台阶
- 变态跳台阶[剑指offer]之python实现
- 【剑指Offer】008 青蛙跳台阶
- 剑指Offer [09] 变态跳台阶
- 剑指offer之跳台阶&变态跳台阶
- 剑指offer---变态跳台阶
- 剑指offer面试题9-青蛙跳台阶及其变种问题
- 剑指offer题解 变态跳台阶
- 剑指offer青蛙跳台阶问题
- 九度1389 剑指offer 变态跳台阶