计蒜客 挑战难题 爬楼梯

Posted

tags:

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

假设你现在正在爬楼梯,楼梯有n级。每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部?

格式:

   第一行输入一个数n(n<=50),代表楼梯的级数。

   接下来一行输出你的方法总数。

样例输入

5

样例输出

8
==========================
第一次code:
 1 import java.util.Scanner;
 2 
 3 public class Main 
 4 {
 5     public static void main(String[] args) 
 6     {
 7         Scanner input = new Scanner(System.in);
 8         System.out.println(a(input.nextInt()));
 9     }
10     static long a (int n)
11     {
12         int a = n / 2;
13         int b = n - a*2;
14         long c=0;
15         if(a==0)
16         {
17             return 1;
18         }
19         else
20         {
21             for(int i=0;i<a;i++)
22             {
23                 c += work(n-(i+1),i+1);
24             }
25             return c+1;
26         }
27     }
28     /**
29      * 计算排列组合
30      * @param n
31      * @param k
32      * @return
33      */
34     static long work(int n , int k)
35     {  
36         if(k > n/2)
37         {  
38             k = n-k;  
39         }  
40         long a = 1;  
41         long b = 1;  
42         int i;  
43         for(i = 1 ; i <= k ; ++i)
44         {  
45             a *= n-i+1;  
46             b *= i;  
47             if(a%b == 0)
48             {  
49                 a /= b;  
50                 b = 1;  
51             }  
52         }  
53         return a/b;  
54     } 
55 }
台阶数为 1 阶时,方法数为:1
台阶数为 2 阶时,方法数为:2
台阶数为 3 阶时,方法数为:3
台阶数为 4 阶时,方法数为:5
台阶数为 5 阶时,方法数为:8
台阶数为 6 阶时,方法数为:13
台阶数为 7 阶时,方法数为:21
台阶数为 8 阶时,方法数为:34
台阶数为 9 阶时,方法数为:55
台阶数为 10 阶时,方法数为:89
台阶数为 11 阶时,方法数为:144
台阶数为 12 阶时,方法数为:233
台阶数为 13 阶时,方法数为:377
台阶数为 14 阶时,方法数为:610
台阶数为 15 阶时,方法数为:987
台阶数为 16 阶时,方法数为:1597
台阶数为 17 阶时,方法数为:2584
台阶数为 18 阶时,方法数为:4181
台阶数为 19 阶时,方法数为:6765
台阶数为 20 阶时,方法数为:10946
台阶数为 21 阶时,方法数为:17711
台阶数为 22 阶时,方法数为:28657
台阶数为 23 阶时,方法数为:46368
台阶数为 24 阶时,方法数为:75025
台阶数为 25 阶时,方法数为:121393
台阶数为 26 阶时,方法数为:196418
台阶数为 27 阶时,方法数为:317811
台阶数为 28 阶时,方法数为:514229
台阶数为 29 阶时,方法数为:832040
台阶数为 30 阶时,方法数为:1346269
台阶数为 31 阶时,方法数为:2178309
台阶数为 32 阶时,方法数为:3524578
台阶数为 33 阶时,方法数为:5702887
台阶数为 34 阶时,方法数为:9227465
台阶数为 35 阶时,方法数为:14930352
台阶数为 36 阶时,方法数为:24157817
台阶数为 37 阶时,方法数为:39088169
台阶数为 38 阶时,方法数为:63245986
台阶数为 39 阶时,方法数为:102334155
台阶数为 40 阶时,方法数为:165580141
台阶数为 41 阶时,方法数为:267914296
台阶数为 42 阶时,方法数为:433494437
台阶数为 43 阶时,方法数为:701408733
台阶数为 44 阶时,方法数为:1134903170
台阶数为 45 阶时,方法数为:1836311903
台阶数为 46 阶时,方法数为:2971215073
台阶数为 47 阶时,方法数为:4807526976
台阶数为 48 阶时,方法数为:7778742049
台阶数为 49 阶时,方法数为:12586269025
台阶数为 50 阶时,方法数为:20365011074

单次运算,时间效率为 0 毫秒。

以上是关于计蒜客 挑战难题 爬楼梯的主要内容,如果未能解决你的问题,请参考以下文章

计蒜客--爬楼梯 (动态规划)

计蒜客练习题:素数距离

计蒜客--八皇后问题

计蒜客斑点蛇

计蒜客之判断质数

计蒜客课程竞赛入门--统计三角形 代码流程摘记