leetcode[68] Climbing Stairs

n个台阶,每次可以走一步或者两步,总共有多少种走法。

第一感觉想到的是递归,n为1的时候1种,2的时候2中。其他时候就是 fun(n) = fun(n-1) + fun(n-2);递归的代码很简单。如下

class Solution {
public:
int climbStairs(int n) {
if (n == ) return ;
if (n == ) return ;
if (n == ) return ;
else
return climbStairs(n-) + climbStairs(n-);
}
};

但是超时了。看了tag提示DP。于是就分分钟改为DP

class Solution {
public:
int climbStairs(int n) {
if (n == ) return ;
if (n == ) return ;
if (n == ) return ;
vector<int> ans(n);
ans[] = ; ans[] = ;
for (int i = ; i < n; ++i)
{
ans[i] = ans[i-] + ans[i-];
}
return ans[n-];
}
};

果断AC。

上一篇:Ubuntu配置TFTP服务器


下一篇:编译最新linux内核(version 4.4.2)