LeetCode链接地址 —>>> 面试题 08.01. 三步问题
分析一下规律
第1层 方法数1
1
第2层 方法数2
1 1
2
第一层3 方法数4
1 1 1
1 2
2 1
3
第4层 方法数7
1 1 1 1
1 1 2
1 2 1
2 1 1
2 2
1 3
3 1
第5层 方法数13
1 1 1 1 1
1 1 1 2
1 1 2 1
1 2 1 1
2 1 1 1
1 2 2
2 1 2
2 2 1
1 1 3
1 3 1
3 1 1
2 3
3 2
这道题就是比【Leetcode爬楼梯】多一种方法,但是思想基本上没变,直接上代码。
class Solution {
public:
int waysToStep(int n) {
if(n==0) return 0;
if(n==1) return 1;
if(n==2) return 2;
if(n==3) return 4;
long long a=1,b=2,c=4;
for(long long i=3;i<n;i++)
{
long long d = (a + b + c) % 1000000007;
a = b;
b = c;
c = d;
}
return c;
}
};