• 计蒜客 挑战难题 爬楼梯


    假设你现在正在爬楼梯,楼梯有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 毫秒。
  • 相关阅读:
    用存储过程实现二进制字段的更新
    在Google 上搜书的方法 (转)
    Oracle开发中,关于查询的一个问题
    北京公司招聘 .net开发人员
    UIAlertView的使用方法
    FMEFB开始上传
    应用中的安全管理方案
    使用NHibernate时需要考虑的另一个问题
    .net使用Com组件的问题
    使用NHibernate时,如何提高访问Oracle数据库(ODP.net)的性能
  • 原文地址:https://www.cnblogs.com/niithub/p/5846814.html
Copyright © 2020-2023  润新知