zoukankan      html  css  js  c++  java
  • 爬楼梯

    描述:假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

    样例:比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法 返回 3

    code:

    class Solution {
    public:
    /**
    * @param n: An integer
    * @return: An integer
    */
    int climbStairs(int n) {
    // write your code here
    if(n==0)                           //分楼梯数大于1和等于1
    return 1;
    int Sum[n];
    Sum[0]=1;
    if(n>1)
    Sum[1]=2;
    for(int i=2;i<n;i++)
    Sum[i]=Sum[i-1]+Sum[i-2];//斐波那契数列求和
    return Sum[n-1];
    }
    };

    思路:1st:如果用传统方法做的话,程序的运算量大而且代码冗杂,不推荐。

            2nd:所以最快的方法是先找到规律在设计算法

            第一层:Sum1=1;

            第二层:1+1=2, 2  Sum2=1+1=2;

                       第三层:1+1+1=3,1+2=3,2+1=3, Sum3=1+1+1=3;

                       第四层:1+1+1+1=4,1+1+2=4,1+2+1=4,2+1+1=4,2+2=4,  Sum4=1+1+1+1+1=5;

                  不难的规律是Sum3=Sum2+Sum1=2+1=3,Sum4=Sum3+Sum2=3+2=5,

                  可以得出一般规律:Sum[i]=Sum[i-1]+Sum[i-2]。

  • 相关阅读:
    webpack配置Jquery全局包及全局包插件
    webpack安装及使用
    Anywhere 随启随用的静态文件服务器
    sourcetree基本使用
    左边固定右边自适应的布局
    如何顺畅使用sourcetree可视化工具
    gulp前端自动化构建工具
    原生DOM操作方法小结
    java Scanner
    java 面向对象 封装
  • 原文地址:https://www.cnblogs.com/Gobenk/p/6518864.html
Copyright © 2011-2022 走看看