标签:item hid boa view 示例 col output return turn
4
JZ-8的简单变形,定义dp[k]为到达第k阶台阶的方案数
不难看出:dp[k] = dp[1] + dp[2] + dp[3] + .... + dp[k-1] + 1
后面的+1 实际上就是一次跳k阶这一种方案
动态规划代码如下
class Solution { public: int jumpFloorII(int number) { if(number == 1) return 1; if(number == 2) return 2; vector<int> dp; dp.push_back(1); dp.push_back(1); dp.push_back(2); for(int i=3;i<=number;i++) { int sum = 0; for(int j=0;j<i;j++) sum += dp[j]; dp.push_back(sum); } return dp[number]; } };
观察代码,我们 【dp[k] = dp[1] + dp[2] + dp[3] + .... + dp[k-1] + 1】这一部分的计算有重复
为了节约时间和空间,我们可以用一个变量sum来记录dp[1] + dp[2] + dp[3] + .... + dp[k-1] + 1
class Solution { public: int jumpFloorII(int number) { if(number == 1) return 1; if(number == 2) return 2; int sum = 4, now = 0; for(int i=3;i<=number;i++) { now = sum; sum += now; } return now; } };
标签:item hid boa view 示例 col output return turn
原文地址:https://www.cnblogs.com/alan-W/p/14227456.html