3.20刷题--备赛ing

news2024/11/24 0:41:44

距离十五届蓝桥杯还有23天,奶奶的拼了。备赛ing

今天刷题 5道

有序分数递归方法
在这里插入图片描述

如何1/2 2/4都是相同的结果,但是需要的是1/2,如何解决这个问题呢,可以看出分子和分母约分最简的时候,他们的gcd==1,所以求出gcd即可。

对于从小到大需要进行排序,可以用一个Node节点来存储这些结果,node节点分为三个值,分子,分母,和对应的分子除以分母得到的结果,这个是doule类型的。
实现comparable接口进行排序。
添加进集合的条件就是如果i<=j,并且最大公约数等于1.就添加进去集合中,然后对集合进行排序,最后遍历集合即可。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        //最后还需要按照大小进行排序的
        List<Node> list=new ArrayList<>();
        for (int i = 0; i <=n; i++) {
            for (int j = i; j <=n ; j++) {
                if (i<=j&&gcd(i,j)==1){
                    double res=1.0*i/j;
                    Node node=new Node(i,j,res);
                    list.add(node);
                }
            }
        }
        Collections.sort(list);
        for (int i = 0; i < list.size(); i++) {
            Node node=list.get(i);
            System.out.println(node.x+"/"+node.y);
        }
    }
    public static  int gcd(int x,int y){ //x小 y大
        if (x==0){
            return y;
        }
        //时间复杂度要低一些
        return  gcd(y%x,x);
    }
    static class Node implements Comparable<Node>{
        int x,y;
        double res;

        public Node(int x, int y, double res) {
            this.x = x;
            this.y = y;
            this.res = res;
        }

        @Override
        public int compareTo(Node o) {
            double  re=this.res-o.res;
            if (re>0){
                return  1;
            }else if (re<0){
                return -1;
            }else{
                return 0;
            }
        }
    }
}

在这里插入图片描述

海洋变暖,需要溶解对应的陆地,采用bfs遍历,如果当前是四周只要有海洋,那么陆地就会被溶解。这个可以这样计算,遇到一个岛屿,计算这个岛屿有多少块陆地,和被溶解了多少块陆地,如果两个相等,说明了这个岛屿就全被溶解了,结果就需要++。如果不等,说明有一个陆地是没有被溶解的。

BFS采用优先队列的形式。

import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {
    static  int n;
    static Scanner scanner=new Scanner(System.in);
    static  int dirs[][]={{0,1},{1,0},{-1,0},{0,-1}}; //方向
    static  char a[][];
    static  boolean visited[][];
    public static void main(String[] args) {
         n=scanner.nextInt();
         a=new char[n][n];
         visited=new boolean[n][n];
        for (int i = 0; i <n; i++) {
           a[i]=scanner.next().toCharArray();
        }
        int cnt=0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
              if (a[i][j]=='#'&&visited[i][j]==false){
                  if (bfs(i,j)==true){
                      cnt++;
                  }
              }
            }
        }
        System.out.println(cnt);

     }
     public static boolean bfs(int x,int y){
         PriorityQueue<Node>queue=new PriorityQueue<>();
         queue.add(new Node(x,y));
         visited[x][y]=true;//表示研究访问过了
         int total = 0;//当前位置连通陆地的数量
         int bound = 0;//被淹没陆地的数量
         while (!queue.isEmpty()){
             Node cur=queue.poll();
             total++; boolean is_bound = false;
             for (int i = 0; i < dirs.length; i++) {
                 int newx=cur.x+dirs[i][0];
                 int newy=cur.y+dirs[i][1];
                 if (newx<0||newx>=n||newy<0||newy>n){
                     continue;
                 }
                 if (visited[newx][newy]==true){
                     continue;
                 }
                 if (a[newx][newy]=='.'){
                     is_bound=true; //如果时海洋 淹没了
                     continue;
                 }
                 queue.add(new Node(newx,newy));
                 visited[newx][newy]=true;
             }if(is_bound){
                 bound++;
             }
         }
         return total==bound;
     }
     static  class  Node implements Comparable<Node>{
         int x,y;

         public Node(int x, int y) {
             this.x = x;
             this.y = y;
         }

         @Override
         public int compareTo(Node o) {
             return 0;
         }
     }
}

模拟散列表,实现插入和查询操作。

散列表的底层是链表+数组。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Socket类

2.2 Socket类 Socket 类&#xff1a;该类实现客户端套接字&#xff0c;套接字指的是两台设备之间通讯的端点。 构造方法 public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指定的host是null &#xff0c;则相当于指定地址为回送…

【HTML】悄悄分享两个好玩的html代码

最近整理U盘资源&#xff0c;本来打算清理掉一些“无用”的文件&#xff0c;结果翻到了之前保存的一个保存着好玩代码的文件夹&#xff0c;默默点开了命名为"大佬做的html.html”这个文件&#xff08;谁还不是一个中二少年呢&#xff09;话不多说&#xff0c;上代码&#…

0301taildir-source报错-flume-大数据

1 基础环境简介 linux系统&#xff1a;centos&#xff0c;前置安装&#xff1a;jdk、hadoop、zookeeper、kafka&#xff0c;版本如下 软件版本描述centos7linux系统发行版jdk1.8java开发工具集hadoop2.10.0大数据生态基础组件zookeeper3.5.7分布式应用程序协调服务kafka3.0分…

成都正信晟锦:亲戚借了钱不认账怎么办是现金

在人际交往中&#xff0c;金钱往来往往是敏感而复杂的议题&#xff0c;尤其是与亲戚间的借贷。若遭遇亲戚借了钱却不认账的尴尬局面&#xff0c;我们该如何妥善处理呢? 沟通始终是解决问题的第一步。尝试与该亲戚进行坦诚的对话&#xff0c;了解不认账的原因。可能是对方遇到了…

基于springboot的车辆充电桩管理平台

技术&#xff1a;springbootmysqlvue 一、背景 科学技术日新月异的如今&#xff0c;计算机在生活各个领域都占有重要的作用&#xff0c;尤其在信息管理方面&#xff0c;在这样的大背景下&#xff0c;学习计算机知识不仅仅是为了掌握一种技能&#xff0c;更重要的是能够让它真正…

【深度学习】手动实现RNN循环神经网络

&#x1f33b;个人主页&#xff1a;相洋同学 &#x1f947;学习在于行动、总结和坚持&#xff0c;共勉&#xff01; 目录 01 回顾 02 RNN神经网络原理 03 RNN神经网络实现 04 RNN神经网络实验 RNN的特别结构使得RNN具备了短期记忆能力&#xff0c;使其能够学习部分语义信息…

php 对接IronSource海外广告平台收益接口Reporting API

今天对接的是IronSource广告reporting api接口&#xff0c;拉取广告收益回来自己做统计。记录分享给大家 首先是文档地址,进入到IronSource后台就能看到文档地址以及参数&#xff1a; 文档地址&#xff1a;https://developers.is.com/ironsource-mobile/air/reporting/ 在这里插…

用户中心项目(前后端环境搭建)

文章目录 1.企业做项目流程2.需求分析1.登录/注册2.用户管理&#xff08;仅管理员可见&#xff09;3.用户校验 3.技术选型4.计划5.初始化项目1.前端初始化1.ant design pro 官网2.ant design pro 初始化1.本地创建一个文件夹存放项目2.cmd进入该目录3.根据官网进行初始化项目4.…

《C语言深度剖析》---------关键字(1)

1.双击实质--->加载内存 windows系统里面&#xff0c;双击的本质就是运行程序&#xff0c;把程序加载到内存里面&#xff1b; 任何程序运行的时候都必须加载到内存里面&#xff1b; 程序没有运行之前在硬盘里面&#xff0c;为什么程序运行之前必须加载到内存里面呢&#…

免费的chatgpt网站(包含最新版4.0)

相信每个人在生活工作学习中都逃不过用chatgpt来解决一些问题&#xff0c;下面我长话短说&#xff0c;为大家简单介绍几款免费且好用的chatgpt网站 1、YesChat 网址&#xff1a;YesChat-ChatGPT4V Dalle3 Claude 3 All in One Free 第一个就给大家介绍一个狠角色&#xff0c;最…

万界星空科技铜杆加工行业生产管理MES系统

传统的铜管加工方法有&#xff1a; &#xff08;1&#xff09;铜管挤压加工技术&#xff08;2&#xff09;铜管上引连铸法&#xff08;3&#xff09;铜管(有缝)焊接生产技术&#xff08;4&#xff09;铸轧法生产精密铜管铸轧法 生产精密铜管是一种全新的生产工艺&#xff0c;…

154.乐理基础-和弦固定标记法(三)九音、十一音、十三音

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里&#xff0c;这里面有五线谱对应的音名&#xff0c;对比着看 内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;153.和弦的织体 上一个内容里练习的答案&#xff1a; 接下…

开放签开源电子签章白皮书-简版

开放签开源电子签章白皮书-简版 一、摘要&#xff1a; 开放签电子签章团队源自于电子合同SaaS公司&#xff0c;立志于通过开源、开放的模式&#xff0c;结合团队十多年的行业经验&#xff0c;将电子签章产品更简单、更低门槛的推广到各行各业中。让电子签章应用更简单&#x…

31.HarmonyOS App(JAVA)鸿蒙系统app Service服务的用法

鸿蒙系统app Service服务的用法 后台任务调度和管控 HarmonyOS将应用的资源使用生命周期划分为前台、后台和挂起三个阶段。前台运行不受资源调度的约束&#xff0c;后台会根据应用业务的具体任务情况进行资源使用管理&#xff0c;在挂起状态时&#xff0c;会对应用的资源使用进…

2024年熔化焊接与热切割证模拟考试题库及熔化焊接与热切割理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年熔化焊接与热切割证模拟考试题库及熔化焊接与热切割理论考试试题是由安全生产模拟考试一点通提供&#xff0c;熔化焊接与热切割证模拟考试题库是根据熔化焊接与热切割最新版教材&#xff0c;熔化焊接与热切割大…

n皇后问题(典dfs )注意对角线状态判断

思路&#xff1a;用的dfs思想&#xff0c;第一种是全排列思路&#xff0c;和数字排列同样的步骤。要注意对对角线的判断。下面画了个图简单示意一下&#xff0c;但是 u 和 i 的位置变了&#xff0c;在代码里呈现不一样。明天再改吧。先睡了。 代码&#xff1a; #include<io…

IDE(集成开发环境)插件是安全开发的便捷方式之一

开发人员每天都使用插件&#xff0c;插件的功能在于简化开发流程&#xff0c;例如自动检测所有特殊字符&#xff08;如“;”、“:”&#xff09;或语法合规性。创建插件的目的本身就是为了让开发人员能够在编写代码时检测漏洞&#xff0c;并在无需离开 IDE 环境的情况下立即修复…

STM32CubeMX学习笔记25---FreeRTOS信号量

一、信号量简介 信号量用于同步&#xff0c;任务间或者任务和中断间同步 互斥量用户互锁&#xff0c;用于保护同时只能有一个任务访问的资源&#xff0c;为资源上一把锁。 二值信号量&#xff1a;同步。如果存在两个线程&#xff0c;为线程1和线程2&#xff0c;如果线程1发送了…

大载重无人机基础技术,研发一款50KG负重六旋翼无人机技术及成本分析

六旋翼无人机是一种多旋翼无人机&#xff0c;具有六个旋翼&#xff0c;通常呈“X”形布局。它采用电动串列式结构&#xff0c;具有垂直起降、悬停、前飞、后飞、侧飞、俯仰、翻滚等多种飞行动作的能力。六旋翼无人机通常被用于航拍、农业植保、环境监测、地形测绘等领域。 六旋…

PolarDN MISC(简单)大礼包 :详细思路过程

0和255 题目给了俩个文件&#xff0c;一个.txt,一个.py .txt文件中包含0和255 一个字节有八位&#xff0c;每一位只能储存1或0&#xff0c;计算机只懂二进制&#xff0c;所以就是2的八次方&#xff0c;又计算机规定从0开始计数&#xff0c;所以是0至255 考虑用编码转换工具将其…