zoukankan      html  css  js  c++  java
  • 清雨的自助餐(斐波那契数列的应用)

    爱奇艺 2019校招 Android方向试卷在线考试

    编程题|20.0分2/2

    清雨的自助餐

    时间限制:C/C++语言 1000MS;其他语言 3000MS
    内存限制:C/C++语言 131072KB;其他语言 655360KB

    题目描述:

    清雨又在吃自助餐了。

    排在清雨面前的有N种食物,排成一排,清雨可以选择其中的若干种食物,但是不能连续选择相邻的食物。因为清雨很挑食,当所有食物都不合口味时,他可以一种都不选,即一个都不选也算为一种方法。

    请问他有多少种选择食物的方法呢?

    输入

    一个整数n(1 <= n <= 90)

    输出

    一个正整数表示答案

    样例输入

    3

    样例输出

    5

    Hint

    样例解释:有3种食物,方案为1、2、3、13、不选,共5种

     

    思路:

    刚开始以为深搜,然后发现到了最大90的时候运行出不来,超时。

    结果一一列举发现,1个数字,选择或者不选,a[1]=2种情况

    2个数字,1, 2, 不选,a[2]=3种情况

    3个数字, 1, 2, 3, 13, 不选,a[3]=5种情况

    4个数字,1, 2, 3, 4, 13, 14, 24, 不选,a[4]=8种情况

    =========这不就是前两项和累加吗?斐波那契额啊

    AC代码:

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
            int n = cin.nextInt();
            cin.close();
            System.out.println(fibonacci(n));
        }
    
        private static long fibonacci(int n) {
            long y1 = 2, y2 = 3, y3 = 5, y = 0;
            for (int i = 4; i <= n; ++i) {
                y = y3 + y2;
                y2 = y3;
                y3 = y;
            }
            if (n == 1)
                return y1;
            if (n == 2)
                return y2;
            if (n == 3)
                return y3;
            return y;
        }
    }

     

    记住一定要返回为long,数据很大,用int只能通过21%

     

    =======================Talk is cheap, show me the code==========================

    CSDN博客地址:https://blog.csdn.net/qq_34115899
  • 相关阅读:
    1、线性DP 213. 打家劫舍 II
    如何在CentOS 8上安装Vtiger CRM?
    如何在不使用密码的情况下切换(su)到另一个用户帐户
    如何解决Ubuntu上的Busybox Initramfs错误
    Linux中的16个Echo命令示例
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Grafana
    如何在Ubuntu 20.04上安装Apache ZooKeeper
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Prometheus
    如何在CentOS 8上安装GlassFish
    如何在CentOS 8上安装Netdata Monitoring
  • 原文地址:https://www.cnblogs.com/lcy0515/p/10807858.html
Copyright © 2011-2022 走看看