这道题属于简单题,最直接的想法就是f(n)=f(n-1)+f(n-2)+f(n-3),可以采取递归的思路,其中出口是f(1)=1,f(2)=2(跨两步或者跨一步),f(3)=4(跨三步,跨一步,跨一步+两步2种类情况)
但是最好不要使用递归的方式,时间复杂度过大,可能时间超限!
可以采取动态规划的形式,采取从下往上计算的方式:
ps. 笔试是acm模式,不是如下的核心代码模式,该代码是我在leecode找到题目写的;做题的时候裸考,所以不会做:(
class Solution {
public int climbStairs(int n) {
int a=1,b=2,c=4;
int m=0;
if(n==1||n==2) return n;
if(n==3) return 4;
for(int i=1;i<=n-3;i++){
m=a+b+c;
a=b;
b=c;
c=m;
}
return m;
}
}