我的算法基础实验代码-下篇

news2024/11/26 11:47:33

第一题

题目介绍

输入一些数值,求出现的次数最多的数。如果有多个并列,则从大到小输出。

解题思路

代码实现

package com.nineWeek;

import java.util.*;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/5/7 18:29
 */

public class NumMostTimes {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<Integer, Integer> countMap = new HashMap<>();
        System.out.println("输入整数时,输入 # 表示输入完成");
        while (scanner.hasNextInt()) {
            int num = scanner.nextInt();
            int count = countMap.getOrDefault(num, 0);
            countMap.put(num, count + 1);
        }

        List<Map.Entry<Integer, Integer>> entryList = new ArrayList<>(countMap.entrySet());
        Collections.sort(entryList, ((o1, o2) -> {
            int cmp = o2.getValue() - o1.getValue();
            if (cmp == 0) {
                cmp = o2.getKey() - o1.getKey();
            }
            return cmp;
        }));
        int maxCount = entryList.get(0).getValue();
        for (int i = 0; i < entryList.size(); i++) {
            int count = entryList.get(i).getValue();
            if (count != maxCount) {
                break;
            }
            System.out.print(entryList.get(i).getKey() + " ");
        }
    }
}

第二题

题目介绍

编程生成一个N阶矩阵,使其主对角线右侧相邻上元素皆为1,与主对角线左侧相邻元素皆为2,其余元素皆为0.

解题思路

代码实现

package com.nineWeek;

import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/5/7 23:26
 */

public class generateMatrix {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] matrix =  generateMatrix(n);

        for (int i = 0; i < n; i++){
            for (int j = 0; j < n; j++){
                System.out.print(matrix[i][j]);
            }
            System.out.println();
        }
    }
    public static int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (j == i + 1) {
                    matrix[i][j] = 1;
                } else if (j == i - 1) {
                    matrix[i][j] = 2;
                } else {
                    matrix[i][j] = 0;
                }
            }
        }
        return matrix;
    }
}

第三题

题目介绍

输入若干个单词,输出它们的平均长度。单词只包含大写字母和小写字母,用一个或多个空格隔开

解题思路

代码实现

package com.nineWeek;

import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/5/14 16:28
 */

public class WordCount {
    public static void main(String[] args) {
        String str;
        Scanner sc = new Scanner(System.in);
        str = sc.nextLine();
        System.out.println(getAverageWordLength(str));

    }
    public static double getAverageWordLength(String input) {
        String[] words = input.split("\\s+");
        int wordCount = words.length;
        int totalLength = 0;
        for (String word : words) {
            totalLength += word.length();
        }
        return ((double)totalLength) / wordCount;
    }
}

第四题

题目介绍

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

解题思路

代码实现

package com.nineWeek;

import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/5/14 16:35
 */

public class CharStatisticg {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一行字符串");
        String input = sc.nextLine();

        int letterCount = 0;
        int spaceCount = 0;
        int digitCount = 0;
        int otherCount = 0;

        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            if (Character.isLetter(c)){
                letterCount++;
            }else if (Character.isDigit(c)) {
                digitCount++;
            }else if(Character.isWhitespace(c)){
                spaceCount++;
            }else {
                otherCount++;
            }
        }

        System.out.println("字母个数 " + letterCount);
        System.out.println("数字个数 " + digitCount);
        System.out.println("空格个数 " + spaceCount);
        System.out.println("其他字符个数 " + otherCount);
    }
}


第五题

题目介绍

这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。

【要求】
【Input】
测试用例的第一行是待凑的钱数值M(1 <= M<= 2000,整数),接着的一行中,第一个整数K(1 <= K <= 10)表示币种个数,随后是K个互不相同的钱币面值Ki(1 <= Ki <=1000)。

【Output】
测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。

【样例输入1】
15
6 2 5 10 20 50 100
【样例输出1】
2
【样例输入2】
1
1 2
【样例输出】
Impossible


解题思路

代码实现

package com.nineWeek;

import java.util.Arrays;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/5/14 16:54
 */

public class ScrapeTogetherMoney {

    public static void main(String[] args) {
        int[] coins = {6,2,5,10,20,50,100};
        int amount = 15;
        int minCoins = minCoins(coins, amount);
        System.out.println("Minimum number of coins required to make " + amount + " is: " + minCoins);
    }

    public static int minCoins(int[] coins, int target) {
        int[] dp = new int[target + 1];
        Arrays.fill(dp, Integer.MAX_VALUE);
        dp[0] = 0;
        for (int i = 1; i <= target; i++) {
            for (int coin : coins) {
                if (coin <= i && dp[i - coin] != Integer.MAX_VALUE) {
                    dp[i] = Math.min(dp[i], 1 + dp[i - coin]);
                }
            }
        }
        return dp[target] == Integer.MAX_VALUE ? -1 : dp[target];
    }
}

第六题

题目介绍

按照键盘输入的数值N的大小,打印如下图形
打印的棱形图案实例

N为图形的行数。要求使用循环实现。

【Input】
显示的行数

【Output】
对应图形。

【样例输入:】
9(如图)

解题思路

代码实现

package com.sixWeek;

import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/1 17:14
 */

public class Algo_6 {
    public static void main(String[] args) {
        /**
         * 打印指定行数棱形图案
         */

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入图案行数");
        int n = sc.nextInt();
        int N = n / 2;
        System.out.println("输入要打印的字符");
        char ch = sc.next().charAt(0);

        for (int i = -N; i < (N + 1); i++) {
            int absN = Math.abs(i);
            //获取总行数和绝对值之间得差距,判断需要打印多少个指定字符
            int diff = N-absN;

            for (int j = -N; j < (N + 1); j++) {
                int absj = Math.abs(j);
                //将判断条件改成小于等于,可以打印实心得棱形
                if (absj == diff){
                    System.out.print(ch);
                }else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

第七题

题目介绍

莫比乌斯函数,使用miu(n) 作为莫比乌斯函数的记号。具体定义如下:如果一个数包含平方因子,那么miu(n) = 0。例如:miu(4), miu(12), miu(18) = 0。如果一个数不包含平方因子,并且有k个不同的质因子,那么miu(n) = (-1)^k。例如:miu(2), miu(3), miu(30) = -1,miu(1), miu(6), miu(10) = 1。给出一个数n, 计算miu(n)。

解题思路

代码实现

package com.nineWeek;

import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/5/14 21:18
 */

public class Mobius {
    public static void main(String[] args) {
        int n;
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        System.out.println(miu(n));
    }

    public static int miu(int n) {
        int count = 0;
        for (int i = 2; i * i <= n; i++) {
            if (n % (i * i) == 0) {
                // 包含平方因子,直接返回 0
                return 0;
            }
            if (n % i == 0) {
                count++;
                n /= i;
                while (n % i == 0) {
                    n /= i;
                    count++;
                }
            }
        }
        if (n > 1) {
            // 处理最后一个质因子
            count++;
        }
        return (count % 2 == 0) ? 1 : -1;
    }
}

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

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

相关文章

第十四届蓝桥杯b组c/c++

D:飞机降落&#xff08;全排列&#xff09; #include<iostream> #include<cstring> using namespace std;const int N 12; int n; struct node{int t, d, l; //t为此飞机的最早降落时间 d为盘旋时间 l为降落所需时间 }p[N]; bool st[N];//DFS求全排列模型 bool d…

【真题解析】系统集成项目管理工程师 2021 年下半年真题卷

本文为系统集成项目管理工程师考试(软考) 2021 年上半年真题&#xff0c;包含答案与详细解析。考试共分为两科&#xff0c;成绩均 ≥45 即可通过考试&#xff1a; 综合知识&#xff08;选择题 75 道&#xff0c;75分&#xff09;案例分析&#xff08;问答题 4 道&#xff0c;75…

ChatGPT 学习与使用总结

ChatGPT 学习与使用总结 最近ChatGPT大火&#xff0c;2023有可能就是AGI元年了。近两个月使用下来&#xff0c;ChatGPT给我最深刻的感觉就是它所具备的理解和思维能力&#xff0c;第一次体验时真的是非常震撼&#xff0c;完全是之前各种『人工智障』智能助理所不能比拟的&…

Windows系统出现蓝屏怎么办?这些方法可以修复!

Windows 系统蓝屏死机&#xff08;BSOD&#xff09;&#xff0c;也被称为“停止错误”&#xff0c;是Windows系统最常见的故障之一。 当Windows遇到严重的故障时就会显示蓝屏&#xff0c;系统崩溃。蓝屏上显示一个停止代码&#xff0c;如"MEMORY_MANAGEMENT"&#xf…

NeRF与三维重建专栏(一)领域背景、难点与数据集介绍

前言 关于该系列专栏&#xff0c;主要介绍NeRF在三维重建中的应用&#xff08;这里我们特指MVS&#xff0c;multi-view stereo&#xff0c;也即输入带位姿的图片&#xff0c;输出三维结构例如点云、mesh等&#xff1b;并且后面的工作也都是围绕MVS with NeRF讨论的。虽然也有w…

人类与ChatGPT:互动中的共同进步

一、ChatGPT的发展历程 1. GPT模型 ChatGPT是由OpenAI推出的一款聊天机器人&#xff0c;其核心技术基于GPT模型。GPT模型&#xff08;Generative Pre-training Transformer&#xff09;是一种基于Transformer结构的预训练语言模型。它在大规模的文本语料库上进行无监督的预训…

解析 ip addr 的输出的内容含义

解读 ip addr 的输出的网络连接信息含义 一、ifconfig 与 ip addr 用过Linux的读者都知道&#xff0c;在Linux查看ip可以使用ifconfig&#xff0c;当然这个ifconfig属于net-tools 工具集&#xff0c;其来源于BSD&#xff0c;Linux从2001年就不对其进行维护了。那我们应该用什…

基于下垂控制的并网逆变器控制MATLAB仿真模型

资源地址&#xff1a; 基于下垂控制的并网逆变器控制MATLAB仿真模型资源-CSDN文库 主要模块&#xff1a; 建议使用MATLAB2021b及以上版本打开&#xff01; 功率计算模块、下垂控制模块、电压电流双环控制模块、虚拟阻抗压降模块 扰动设置&#xff1a; 在0.5秒到2秒始端设置…

微软出品的实用小工具

微软出品的实用小工具 分享一些微软出品的实用小工具&#xff0c;希望对大家有所帮助。 文章目录 微软出品的实用小工具SysinternalsSuite常用工具AutorunsprocdumpProcess Explorer进程监视器 Process MonitorpsloggedonAccessChk示例 PsToolsrdcmanTcpviewVmmap Sysinternals…

数据结构_树与二叉树

目录 1. 树的基本概念 1.1 树的定义 1.2 基本术语 1.3 树的性质 1.4 相关练习 2. 二叉树的概念 2.1 二叉树的概念及其主要特性 2.2 二叉树的存储结构 2.2.1 顺序存储结构 2.2.2 链式存储结构 2.3 相关练习 3. 二叉树的遍历和线索二叉树 3.1 二叉树的遍历 3.1.1 先…

基于微信小程序校内论坛系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatis-plus 本系统分微信小程序和管理后台两部分&a…

神马网络——IP地址

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…

ChatGPT提示词技巧

自计算机问世以来&#xff0c;人类与计算机之间的交互方式已经经历过几个重要的阶段&#xff1a; 指令式交互&#xff08;Command-based Interaction&#xff09; 早期的计算机系统主要采用了指令式交互方式&#xff0c;用户需要输入特定的命令或代码来完成各种任务。这种交…

软件与硬件的联调之小程序与云平台相互通信

软件与硬件的联调之小程序与云平台相互通信 本人专注使用云开发&#xff0c;实现一个前端可以做后端以及整个项目的部署与上线。 如果觉得我讲的好就可以给我点个赞。 #mermaid-svg-xJRh48GCcG2gzlqz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-si…

深度学习之图像分类识别(二):ZFNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型&#xff0c;将持续更新&#xff0c;包括不仅限于&#xff1a;AlexNet&#xff0c; ZFNet&#xff0c;VGG&#xff0c;GoogLeNet&#xff0c;ResNet&#xff0c;DenseNet&#xff0c;SENet&#xff0c;MobileNet&#xff0c…

我的第一个Electron应用

hello&#xff0c;好久不见&#xff0c;最近笔者花了几天时间入门Electron&#xff0c;然后做了一个非常简单的应用&#xff0c;本文就来给各位分享一下过程&#xff0c;Electron大佬请随意~ 笔者开源了一个Web思维导图&#xff0c;虽然借助showSaveFilePicker等api可以直接操…

【C#】接口实现多态增强版

背景 在实际的生产中&#xff0c;会涉及到需要对接多种相似性较高的系统。具体而言就是业务接口是相同的&#xff0c;但是会出现接口的参数不同的情况。这时做一个对接隔离层就显得优势很明显了。这个隔离层的作用就有了两个基本的作用&#xff1a; 1、单一性&#xff0c;保护我…

【网络】- TCP/IP四层(五层)协议 - 物理层

目录 一、概述 二、物理层的基本概念 三、OSI 参考模型  &#x1f449;3.1 导引型传输媒体  &#x1f449;3.1 导引型传输媒体 一、概述 TCP/IP 在最初定义时&#xff0c;是一个四层的体系结构&#xff0c;包括应用层、传输层、网络层、网络接口层。不过从实质上来讲&#xf…

Makefile基础教程(变量的高级主题,变量的拓展)

文章目录 前言一、变量值的替换1.简单替换2.模式替换1.变量的模式替换2.规则中的模式替换 二、变量值的嵌套三、命令行变量四、define和override五.环境变量六.局部变量七.模式变量 总结 前言 本篇文章将给大家讲解一下变量的高级主题&#xff0c;变量的拓展&#xff0c;这些主…

详解C++类和对象(下篇)

目录 一&#xff0c;再谈构造函数 1.1 构造函数体赋值 1. 2 初始化列表 1.21 自定义类型成员 1.22 const 成员变量 1.23 引用成员变量 1. 24 初始化列表的“坑” 1. 3 explicit 关键字 二&#xff0c;static 成员 2.1 概念 2.2 特性 三&#xff0c; 友元 3.…