您的位置:首页 > 大数据 > 人工智能

LeetCode之“动态规划”:Climbing Stairs

2015-06-09 17:07 441 查看
  题目链接

  题目要求

  You are climbing a stair case. It takes n steps to reach to the top.

  Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

  做这道题容易陷入的思维就是:所有step加起来的总和是n。俺这种思维去解决这个问题的话会显得很复杂。

  按动态规划的思维,要爬到第n阶,可以从第n-1阶爬1阶到达,也可以从第n-2阶爬2阶到达,因此爬到第n阶的方法有这么多种:

dp[n] = dp[n - 1] + dp[n - 2]


  按此思维的程序代码如下:

class Solution {
public:
int climbStairs(int n) {
if(n == 0 || n == 1 || n == 2)
return n;

int * dp = new int[n + 1];
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;

for(int i = 3; i < n + 1; i++)
dp[i] = dp[i - 1] + dp[i - 2];

return dp
;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: