解题(GoUpstairs -- 上楼梯)

Posted hzy1234

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解题(GoUpstairs -- 上楼梯)相关的知识,希望对你有一定的参考价值。

题目描述 

有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007

给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。

测试样例:
1
返回:1

代码如下:

 1 2 3 
 4 //对于上k级台阶,当k>3时,由于每次可以上1,2,3级,则最后一次应该是上1,2,3中的一个
 5 //case1,最后一次上1级,也即前面上了k-1级,k-1级的可能情况为:A[k-1]次
 6 //同理 case2,A[k-1], case3 A[k-3]
 7 //从而有: A[k] = A[k-3] + A[k-2] + A[k-1]
 8 class GoUpstairs {
 9 public:
10     int countWays(int n) {
11         long long resMid;
12         long long frontWay[3] = { 1, 2, 4 };
13         if (n < 4) return frontWay[n - 1];
14         for (int i = 3; i < n; i++){
15             long long temp = frontWay[0] + frontWay[1] + frontWay[2];
16             frontWay[0] = frontWay[1];
17             frontWay[1] = frontWay[2];
18             frontWay[2] = temp;
19             if (frontWay[2] > 1000000007){
20                 frontWay[2] = frontWay[2] % 1000000007;
21             }
22         }
23         int res = frontWay[2] % 1000000007;
24         return res;
25     }
26 };


 借鉴自牛客网友  原文链接:https://www.nowcoder.com/questionTerminal/7f0661ace6df48d0af3f924950d57126

 

 

 




以上是关于解题(GoUpstairs -- 上楼梯)的主要内容,如果未能解决你的问题,请参考以下文章

go up stairs啥意思

走楼梯(walk) 解题报告

文巾解题 70. 爬楼梯

LeetCode746. 使用最小花费爬楼梯(C++)

LeetCode刷题笔记-动态规划-day2

LeetCode刷题笔记-动态规划-day2