四道经典算法JAVA

1.爬楼地

爬20个台阶的爬法:=f(19)+f'(18)

经典斐波拉契数列问题 

public class demo4 {
    //爬楼梯问题
    public static void main(String[] args) {
        System.out.println(getSum(20));
    }

    public static int getSum(int n) {
        if (n == 1)
            return 1;
        if (n == 2)
            return 2;
        return getSum(n - 1) + getSum(n - 2);
    }
}

2.按照要求排序问题

package lx;

import java.util.Arrays;
import java.util.Comparator;

public class demo1 {
    public static void main(String[] args) {
        Girlfriend g1 = new Girlfriend("zhangsan", 18, 90);
        Girlfriend g2 = new Girlfriend("lisi", 19, 100);
        Girlfriend g3 = new Girlfriend("wangwu", 20, 110);
        //定义数组存储对象
        Girlfriend[] arr = {g1, g2, g3};
        // Arrays.sort(arr, new Comparator<Girlfriend>() {
           /* public int compare(Girlfriend o1, Girlfriend o2) {
                //按照年龄的大小进行比较,年龄一样,按照身高比较,身高一样按照姓名的字母比较
                double tmp = o1.getAge() - o2.getAge();
                tmp = tmp == 0 ? o1.getHeight() - o2.getHeight() : tmp;
                tmp = tmp == 0 ? o1.getName().compareTo(o2.getName()) : tmp;
                if (tmp < 0) {
                    return -1;
                } else if (tmp > 0) {
                    return 1;
                } else
                    return 0;
            }
        });*/
        //lambda表达式
        //()->{}
        //():对应抽象方法的形参
        //{}:方法体
        Arrays.sort(arr, (o1, o2) -> {
            //按照年龄的大小进行比较,年龄一样,按照身高比较,身高一样按照姓名的字母比较
            double tmp = o1.getAge() - o2.getAge();
            tmp = tmp == 0 ? o1.getHeight() - o2.getHeight() : tmp;
            tmp = tmp == 0 ? o1.getName().compareTo(o2.getName()) : tmp;
            if (tmp < 0) {
                return -1;
            } else if (tmp > 0) {
                return 1;
            } else
                return 0;

        });
        System.out.println(Arrays.toString(arr));
    }
}

女朋友类

package lx;

public class Girlfriend {
    private String name;
    private int age;
    private int height;

    public Girlfriend(String name, int age, int height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    public Girlfriend() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    @Override
    public String toString() {
        return "Girlfriend{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", height=" + height +
                '}';
    }
}

3.兔子问题(斐波拉契数列)

package lx;

public class demo2 {
    public static void main(String[] args) {

        //斐波那契数列
        int[] arr = new int[12];
        arr[0] = 1;
        arr[1] = 1;
        for (int i = 2; i < arr.length; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
        }

        System.out.println(arr[11]);
    }
}

4.猴子吃桃问题

package lx;


public class demo3 {
    public static void main(String[] args) {
        //猴子偷桃问题
        /*
        有一堆桃子,猴子第一天吃了其实一半,并且多吃了一个!
        以后每天猴子都吃当前剩下来的一半,然后多吃一个
        第10天的时候(还没有吃),发现就剩下一个桃子,请问最初总共多少个桃子
        day10 1;
        day9=(day10+1)*2 4
        day8=(day9+1)*2  10
        每一天的桃子的数量都是后一天数量+1,*2
         */


        //method01();
        /*
        1.出口
        day==10 剩下一个
        2. 规律
        每一天的桃子的数量都是后一天数量+1,*2

         */

        System.out.println(getCount(1));
    }

    public static int getCount(int day) {
        if (day <= 0 || day >= 11) {
            System.out.println("当前时间错误");
            return -1;
        }
        //出口
        if (day == 10) {
            return 1;
        } else {// 每一天的桃子的数量都是后一天数量+1,*2
            return (getCount(day + 1) + 1) * 2;
        }
    }

    private static void method01() {
        int day = 0;
        int x = 1;
        int y = 0;
        for (day = 9; day >= 1; day--) {
            y = (x + 1) * 2;
            x = y;
        }
        System.out.println(y);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/790901.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零开始学习嵌入式----Linux系统命令集合与shell脚本

Shell是一门编程语言&#xff0c;作为学习shell的开始&#xff0c;需要事先搞明白&#xff1a;编程的目的是什么&#xff1f;什么是编程语言&#xff1f;什么是编程&#xff1f; shell本身就是一门解释型、弱类型、动态语言&#xff0c;与python相对应&#xff0c;Python属于解…

mysql查询语句执行流程

流程图 连接器&#xff1a;建立连接&#xff0c;管理连接、校验用户身份&#xff1b;查询缓存&#xff1a;查询语句如果命中查询缓存则直接返回&#xff0c;否则继续往下执行。MySQL 8.0 已删除该模块&#xff1b;解析 SQL&#xff0c;通过解析器对 SQL 查询语句进行词法分析、…

服务器提交记录有Merge branch消除

背景&#xff1a;在共同开发分支release上&#xff0c;你提交了commit&#xff0c;push到服务器上时&#xff0c;发现有人先比你push了&#xff0c;所以你得先pull&#xff0c; 后再push&#xff0c;然而pull后自动产生了一个Merge branch的一个commit&#xff0c;这个commit本…

linux watchdog 子系统

目录 一、watchdog 子系统二、关键数据结构2.1 watchdog_device2.2 watchdog_ops2.3 watchdog_info 三、重要流程3.1 watchdog 初始化3.2 watchdog 设备注册3.3 watchdog 设备文件操作函数3.4 watchdog 喂狗用户空间 watchdog&#xff08;busybox&#xff09;内核空间喂狗疑问 …

防火墙综合实验一

目录 实验要求 防火墙准备 IP地址分配 需求一 需求二 需求三 需求四 需求五 需求六 实验要求 1、DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问。 2、生产区不允许访问互联网&#xff0c;办公区和游客…

单向链表队列

实现单向链表队列的&#xff0c;创建&#xff0c;入队&#xff0c;出队&#xff0c;遍历&#xff0c;长度&#xff0c;销毁。 queue.h #ifndef __QUEUE_H__ #define __QUEUE_H__#include <stdio.h> #include <stdlib.h> #include <string.h> #define max 30…

图论---无向图中国邮路的实现

开始编程前分析设计思路和程序的整体的框架&#xff0c;以及作为数学问题的性质&#xff1a; 程序流程图&#xff1a; 数学原理&#xff1a; 本质上是找到一条欧拉回路&#xff0c;考虑图中的边权重、顶点的度数以及如何通过添加最少的额外边来构造欧拉回路&#xff0c;涉及到欧…

PLC数采网关在实际应用中有哪些效能?天拓四方

在工业自动化领域中&#xff0c;PLC扮演着至关重要的角色&#xff0c;它负责控制和监测生产线的各个环节。然而&#xff0c;随着工业4.0的推进和智能制造的快速发展&#xff0c;单纯依靠PLC进行现场控制已无法满足企业对数据集中管理、远程监控和智能分析的需求。因此&#xff…

筑牢代码安全之盾 —— 沙箱在源代码防泄密中四大特性

在这个数字化飞速发展的时代&#xff0c;源代码作为企业的核心资产&#xff0c;其安全性显得尤为重要。一旦泄露&#xff0c;不仅可能导致知识产权的损失&#xff0c;还可能引发一系列连锁反应&#xff0c;威胁企业的生存和发展。在这样的背景下&#xff0c;SDC沙盒以其独特的产…

洛杉矶裸机云大宽带服务器的特性和优势

洛杉矶裸机云大宽带服务器是结合了物理服务器性能和云服务灵活性的高性能计算服务&#xff0c;为用户提供高效、安全的计算和存储能力。在了解如何使用洛杉矶裸机云大宽带服务器之前&#xff0c;需要了解其基本特性和优势。以下是对洛杉矶裸机云大宽带服务器的具体分析&#xf…

ZFT9-7VE8043-Z同期脉冲发送装置100V JOSEF约瑟 柜内安装

ZFT9(PIG)同期脉冲发送装置 系列型号 ZFT9(PIG) 7VE8033同期脉冲发送装置; ZFT9(PIG) 7VE8043同期脉冲发送装置; ZFT9 7VE8033同期脉冲发送装置; ZFT9 7VE8043同期脉冲发送装置; 用途&#xff1a; ZFT9同期脉冲发送装置用于船舶的三相系统&#xff0c;根据发电机和电力系…

突发,众多网站流量被盗刷!事情没那么简单。。

这两天发生了一件震惊 IT 圈的大事&#xff0c;很多程序员博主的网站竟然 同时 被恶意攻击&#xff0c;盗刷了大把流量费&#xff0c;我这个老倒霉蛋自然也中招了&#xff0c;作为受害人&#xff0c;专门做了本次分享&#xff0c;希望其他有网站的朋友们也都小心点。 那为什么…

【UE5】调用ASR接口,录制系统输出。录制音频采样率不匹配

暂时测出window能用。阿里的ASR接口当前仅支持8000和16000。UE默认采样44100。

【postgresql】视图(View)

PostgreSQL 中的视图&#xff08;View&#xff09;是一种虚拟表&#xff0c;其内容由 SQL 查询定义。视图可以简化复杂的 SQL 操作&#xff0c;使得用户能够以一种更直观、更易于理解的方式来访问和操作数据。 PostgreSQL 视图是只读的&#xff0c;因此可能无法在视图上执行 D…

pd虚拟机去虚拟化是什么意思?pd虚拟机去虚拟化教程 PD虚拟机优化设置

Parallels Desktop for Mac&#xff08;PD虚拟机&#xff09;去虚拟化是指在虚拟机&#xff08;Virtual Machine&#xff0c;简称 VM&#xff09;中禁用或减少虚拟化层的影响&#xff0c;使其表现更接近于物理机。这种操作通常用于提高虚拟机的性能或解决某些软件兼容性问题。具…

基于JAVA+SpringBoot+Vue的社区普法平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 社区普法平台旨在为社…

10个JavaScript One-Liners让初学者看起来很专业

原文链接&#xff1a;https://pinjarirehan.medium.com/10-javascript-one-liners-for-beginner-developers-to-look-pro-b9548353330a 原文作者&#xff1a;Rehan Pinjari 翻译&#xff1a;小圆 你是不是在辛苦码字时&#xff0c;看到别人轻松甩出一行 JavaScript 就搞定难题…

ubuntu 上vscode +cmake的debug调试配置方法

在ubuntu配置pcl点云库以及opencv库的时候&#xff0c;需要在CMakeLists.txt中加入相应的代码。配置完成后&#xff0c;无法调试&#xff0c;与在windows上体验vs studio差别有点大。 找了好多调试debug配置方法&#xff0c;最终能用的有几种&#xff0c;但是有一种特别好用&a…

如何学习一门新技术,十年 MarkDown 程序员怎么做

案例源码仓库地址&#xff1a; https://github.com/Rodert/go-demo官方文档&#xff1a; https://etcd.io/视频教程&#xff1a; https://space.bilibili.com/404747369 文章目录 介绍使用场景 安装&搭建搭建 ETCD与 ETCD 交互集群 GoETCD 编码 介绍 谈使用场景之前&#…

C#知识|账号管理系统:UI层-添加账号窗体设计思路及流程。

哈喽,你好啊,我是雷工! 前边练习过详情页窗体的设计思路及流程: 《C#知识|上位机UI设计-详情窗体设计思路及流程(实例)》 本节练习添加账号窗体的UI设计,以下为学习笔记。 01 效果展示 02 添加窗体 在UI层添加Windows窗体,设置名称为:FrmAddAcount.cs 设置窗体属…