码迷,mamicode.com
首页 > 其他好文 > 详细

解题(GoUpstairs -- 上楼梯)

时间:2018-09-04 23:31:16      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:com   pre   int   long   smi   air   title   res   sub   

题目描述 

有个小孩正在上楼梯,楼梯有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 -- 上楼梯)

标签:com   pre   int   long   smi   air   title   res   sub   

原文地址:https://www.cnblogs.com/hzy1234/p/9589040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!