• 京东算法笔试


         算这两道题以前都做过吧,第一题斐波拉契的非递归实现,第二题总结递推公式。慢慢积累!

    /*****************************************************
    * file     SingletonPatternDemo.cpp
    * date     2016/07/13 18:20
    * author   ranjiewen
    * contact: ranjiewen@outlook.com
    *****************************************************/
    
    //有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。
    //给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。
    //测试样例:
    //3
    //返回:2
    
    
    #include <iostream>
    using namespace  std;
    
    //// 费波纳西数列的非递归解法
    class GoUpstairs {
    public:
        int countWays(int n) {
            // write code here
            /*if (n == 1)
                return 0;
    
                else if (n == 2)
                return 1;
                else if (n == 3)
                return 2;
                else
                return (countWays(n - 1) + countWays(n - 2)) % 1000000007;*/
            unsigned long long dp[101] = { 0 };
            dp[2] = 1;
            dp[3] = 2;
            for (int i = 4; i <= n; i++)
            {
                dp[i] = dp[i - 1] + dp[i - 2];
                if (dp[i] > 1000000007)
                {
                    dp[i] = dp[i] % 1000000007;   //59以后的数就没有意义了,溢出了。
                }
            }
            return dp[n];
        }
    };
    
    int main(int argc, char* argv[])
    {
        int  count = 0;
        GoUpstairs s;
        cout << s.countWays(96) << endl;
        //cout << s.dp[96] << endl;
        return 0;
    }
    
    //小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数)
    //给定四个整数A, B, C, D,请返回所求结果。
    //测试样例:
    //100, 90, 80, 70
    //返回:1020
    
    
    class Balls {
    public:
        int calcDistance(int A, int B, int C, int D) {
            // write code here
            return 3 * (A + B + C + D);
        }
    
        int calcDistance(int A, int B, int C, int D) {
            int result = A + B + C + D;
            return result + distance(A) + distance(B) + distance(C) + distance(D);
        }
    private:
        int distance(int n) {
            if (n <= 0)
                return 0;
            int mod = n % 2;
            return n + distance(n / 2) + mod;
        }
    };
  • 相关阅读:
    【spring 事务注解配置】事务回滚
    myisam 和 innodb 对比
    mysql replace into用法详细说明
    [nginx] 配置
    【lucene】中文分词
    Lucene 4.9 document的简单应用
    Spring事务配置的五种方式
    Open-Drain与Push-Pull
    HDMI中的AVmute是什么功能
    在Keil uv5里面添加STC元器件库,不影响其他元件
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5674092.html
Copyright © 2020-2023  润新知