![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法题(Java完成)
在刷题过程中总结的题目,使用Java完成
小梁说代码
北京大学博士在读 | 阿里云专家博主 | 爬虫领域分享 | 保研分享 | 用最优质的内容带来最舒适的阅读体验。欢迎一起交流!(线上线下均可)
展开
-
【java】202012-1 期末预测之安全指数
import java.util.Scanner;public class Main{ public static void main(String[] args) { Scanner s=new Scanner(System.in); int sum=0; int n=s.nextInt(); while(n--!=0){ int w=s.nextInt(); int score=s.nextInt(); sum+=w*score; } if(s.原创 2021-09-13 20:16:09 · 114 阅读 · 0 评论 -
【java】202104-2 邻域均值
使用 二维前缀和 算法import java.util.Scanner;public class Main{ static int[][] arr; static int n,L,r,t=0; public static void main(String[] args) { Scanner s=new Scanner(System.in); n=s.nextInt(); L=s.nextInt(); r=s.nextInt(); t=s.nextInt(); a.原创 2021-09-13 19:32:53 · 156 阅读 · 0 评论 -
【java】 202104-1 灰度直方图
问题描述一幅长宽分别为 个像素和 个像素的灰度图像可以表示为一个 大小的矩阵 。其中每个元素 (、)是一个 范围内的整数,表示对应位置像素的灰度值。具体来说,一个 比特的灰度图像中每个像素的灰度范围是 。一副灰度图像的灰度统计直方图(以下简称“直方图”)可以表示为一个长度为 的数组 ,其中 ()表示该图像中灰度值为 的像素个数。显然, 到 的总和应等于图像中的像素总数 。已知一副图像的灰度矩阵 ,试计算其灰度直方图 。输入格式输入共 行。输入的第一行包含三个用空格分隔的正整原创 2021-09-13 19:30:02 · 149 阅读 · 0 评论 -
【Java每日一题,动态规划,Map实现】最长定差子序列
给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference。子序列是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从arr 派生出来的序列。第一行给出数组arr的元素个数,第二行给出arr中各个元素的值,第三行给出等差difference。其中,1 ...原创 2022-07-11 02:09:23 · 108 阅读 · 0 评论 -
【Java每日一题,逻辑思维】下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)第一行给出整数个数n,第二行给出n个排列整数输出将给定数字序列重新排列成字典序中下一个更大的排列inputoutputSolutionExperience这道题目认真考虑起来其实有点复杂。关键是怎么想的就把代码进行实现。...原创 2022-07-11 02:02:24 · 119 阅读 · 0 评论 -
【Java每日一题,动态规划,零钱兑换模板题】硬币组合数量
给你一个非负整数n,再给你一个整数数组nums表示不同面值的硬币。请你计算并返回可以凑成总金额n的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。假设每一种面额的硬币有无限个。n和nums都在int整数范围内第一行输入整数n和m。n表示总金额数(1...原创 2022-07-11 01:41:27 · 612 阅读 · 0 评论 -
【Java每日一题,dfs】矩阵查找字符串
有一个m*n正整数矩阵(0-9),输入一个字符串,字符串由0-9的数字组成,要求判断是否存在从矩阵中的一点出发,可以从顺序相邻的数字构成该字符串。相同的数字单元只能使用一次第一行输入两个数字分别是m,n, 1...原创 2022-07-11 00:15:37 · 182 阅读 · 0 评论 -
【Java每日一题,dp预处理+回溯】回文串分割
回文串指其正向和反向相等的字符串。输入一个字符串,请将该字符串分割为一些子串,使得每个子串都是回文字符串,输出符合要求的最少的分割次数。输入为一行不包含空格的连续字符串。长度不超过100一个整数,分割次数inputoutputSolutionExperience这道题真只有80分,不知道问题出在了哪里。先是使用dp找到所有的回文字符串,然后回溯统计回文字符串切割的最少次数。...原创 2022-07-11 00:06:22 · 225 阅读 · 0 评论 -
【Java每日一题,动态规划】数字金字塔
给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。73 88 1 02 7 4 4第一行包含整数 n,表示数字三角形的层数。接下来 n 行,每行包含若干整数,其中第 i行表示数字三角形第i 层包含的整数。所有输入整数绝对值小于20输出一个整数,表示最大的路径数字和。inputoutputSolutionExperience很久没用dp,第一时间竟然忘记怎么写了,哎。...原创 2022-07-10 23:32:40 · 681 阅读 · 0 评论 -
【Java每日一题,优先队列简单题】数组修改
给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。重复这个过程恰好 k 次。可以多次选择同一个下标 i 。以这种方式修改数组后,返回数组 可能的最大和 。第一行输入两个正整数n(数组长度),k(翻转次数)。随后输入n个整数,即给定数组nums。输出翻转完毕的最大和。inputoutputSolutionExperience总体上没什么难度,第一次使用java 的优先队列,PriorityQueue。之后会用了..原创 2022-07-10 23:28:31 · 191 阅读 · 0 评论 -
【Java每日一题,打表】K镜像数字的和
一个 k 镜像数字 指的是一个在十进制和 k 进制下从前往后读和从后往前读都一样的没有前导0的正整数。比方说,9 是一个 2 镜像数字。9 在十进制下为 9 ,二进制下为 1001 ,两者从前往后读和从后往前读都一样。相反地,4 不是一个 2 镜像数字。4 在二进制下为 100 ,从前往后和从后往前读不相同。给你进制 k 和一个数字n,请你返回k镜像数字中最小的n 个数之和。给定两个整数k和n,其中k(2 ...原创 2022-07-10 23:23:43 · 370 阅读 · 0 评论 -
【Java每日一题,dfs】挖出最大财宝
给你一个大小为m*n的矩阵Mine表示矿场,里面有丰富的宝石。Mine(i,j)若大于0,表示该点存在宝石,其值为宝石价值;若等于0,表示的是不可进入的区域;若小于-1表示危险区域。当你选择一个点挖宝石的时候,你可以把相邻(上下左右)的宝石也挖出来。但是注意,任意你挖出宝石的点不可与危险区域相邻。请计算你从某一点作为起点能挖出的最大财富,财富等于你挖出宝石价值的总和。第一行给出m和n,第二行给出Mine的一维表示1...原创 2022-07-10 23:06:15 · 159 阅读 · 0 评论 -
【Java每日一题,字典序算法】下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)第一行给出整数个数n,第二行给出n个排列整数输出将给定数字序列重新排列成字典序中下一个更大的排列inputoutputSolutionExperience字典序典型算法,要记住...原创 2022-07-04 21:10:17 · 286 阅读 · 0 评论 -
【Java每日一题,动态规划】最长定差子序列
给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference。第一行给出整数个数n,第二行给出n个排列整数,第三行间隔对每一组输入,在一行中输出最长等差子序列的长inputoutputSolutionExperiencedp也能用map来实现...原创 2022-07-04 20:33:36 · 198 阅读 · 0 评论 -
【Java每日一题,审题的重要性(样例输入)】完数
完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。本题的任务是判断两个正整数之间完数的个数。输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1...原创 2022-06-23 10:30:05 · 137 阅读 · 0 评论 -
【java每日一题,数论】最大公约数,最大质因数,欧拉筛
写题目时候,三个实用的数论算法原创 2022-06-19 19:07:28 · 160 阅读 · 0 评论 -
【Java每日一题,简单题】csp202203-3 风险人群筛查
IntroductionInputOutput输出共两行,每行一个整数,分别表示经过高危区域的人数和曾在高危区域逗留的人数。Sampleinput5 2 6 20 40 100 80100 80 100 80 100 80 100 80 100 80 100 8060 50 60 46 60 42 60 38 60 34 60 3010 60 14 62 18 66 22 74 26 86 30 10090 31 94 35 98 39 102 43 106 47 110 510原创 2022-05-22 22:01:38 · 246 阅读 · 0 评论 -
【Java每日一题,容器+思维】csp202012-2 期末预测之最佳阈值
IntroductionInputOutput输出到标准输出。输出一个整数,表示最佳阈值 θ*。Sampleinput60 01 01 13 15 17 1output3input85 15 05 02 13 04 0100000000 11 0output100000000Solutionimport java.util.Map;import java.util.Scanner;import java.util.TreeMap;原创 2022-05-22 20:54:15 · 224 阅读 · 0 评论 -
【Java每日一题,容器+暴力优化】csp202109-2 非零段划分
IntroductionInputOutputSampleinput113 1 2 0 0 2 0 4 5 0 2output5input145 1 20 10 10 10 10 15 10 20 1 5 10 15output4Solutionimport java.util.Collection;import java.util.LinkedList;import java.util.Scanner;import java.util.TreeMap;原创 2022-05-20 12:16:58 · 205 阅读 · 0 评论 -
【Java每日一题,前缀和】csp202203-2 出行计划
IntroductionInputOutput输出共 m 行,每行一个整数,表示对应查询的答案。Sampleinput6 2 105 2410 2411 2434 2435 2435 4812output33Solutionpackage csp;import java.util.Scanner;public class Main20220302 { public static void main(String[] args) {原创 2022-05-17 23:46:23 · 474 阅读 · 1 评论 -
【Java每日一题,dfs】Find The Multiple
Introduction在2100年科学家发现了平行宇宙,但是新发现的Earth2的世界中所有数字都是由0和1组成的十进制数,如果从我们的世界穿越到Earth2,数字将发生一些变化,例如:一个正整数n,将被转化为n的一个非零的倍数m,这个m应当符合Earth2的数字规则。你可以假定n不大于200且m不多于100位。提示:本题采用Special Judge,你无需输出所有符合条件的m,你只需要输出任一符合条件的m即可Input输入包含多组数据,每组数据仅一行,只包含一个正整数n,n==0时输入结束 (原创 2022-05-16 11:27:08 · 83 阅读 · 0 评论 -
【Java每日一题,dfs】[USACO1.5]八皇后 Checker Challenge
Introduction一个如下的 6 \times 66×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列 2\ 4\ 6\ 1\ 3\ 52 4 6 1 3 5 来描述,第 ii 个数字表示在第 ii 行的相应位置有一个棋子,如下:行号 1\ 2\ 3\ 4\ 5\ 6 1 2 3 4 5 6列号 2\ 4\ 6\ 1\ 3\ 5 2 4 6 1 3 5这只是棋子放置的一个解。请编一个程序找原创 2022-05-15 12:23:09 · 106 阅读 · 0 评论 -
【Java每日一题,01背包问题】 kkksc03考前临时抱佛脚
IntroductionInputOutput输出一行,为复习完毕最短时间。Sampleinput1 2 1 3 54 362 4 3output20Solutionimport java.util.Arrays;import java.util.Collections;import java.util.Scanner;/** * @author liangyuanshao * @date 2022/5/14 - 18:01 */public cla原创 2022-05-14 18:48:51 · 255 阅读 · 1 评论 -
【Java每日一题,dfs】哈密顿绕行世界问题
Introduction牛牛子想当嘉然小姐的狗,但嘉然小姐喜欢的是猫,于是他在纸上画了一个规则的实心十二面体,这个十二面体上面的 20个顶点标出的20个国家,牛牛子想从一个国家出发经过每个国家恰好一次后回到出发的国家。但是他不懂,你能帮帮他吗?Input前20行的第i行有3个数,表示与第i个国家相邻的3个国家.第20行以后每行有1个数m,m<=20,m>=1.m=0退出.Output输出牛牛子从第m个国家出发经过每个国家1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.原创 2022-05-11 16:53:58 · 162 阅读 · 0 评论 -
【Java每日一题,dfs】洛谷P1162 填涂颜色
Introduction由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向。现要求把闭合圈内的所有空间都填写成22.例如:6 \times 66×6的方阵(n=6n=6),涂色前和涂色后的方阵如下:0 0 0 0 0 00 0 1 1 1 10 1 1 0 0 11 1 0 0 0 11 0 0 0 0 11 1 1 1 1 10 0 0 0 0 00 0 1 1 1 10 1 1 2 2 11 1 2 2 2 11 2 2 2 2 1原创 2022-05-10 19:46:47 · 110 阅读 · 0 评论 -
【Java每日一题,字符串正则匹配】Andy‘s First Dictionary
IntroductionAndy, 8, has a dream - he wants to produce his very own dictionary. This is not an easy task for him, as the number of words that he knows is, well, not quite enough. Instead of thinking up all the words himself, he has a briliant idea. From h原创 2022-05-10 19:07:17 · 140 阅读 · 0 评论 -
【Java每日一题,Map和字符串】Ananagrams
Introduction输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本的另外一个单词。在判断是否满足条件时,字母不分大小写,但在输出时应保留输入的大小写,按字典序排列。Input输入包含若干行,每行不超过80个字符,由一些单词组成。单词由不超过20个大小写字母组成。Output输出将由一系列行组成。每一行将由一个单词组成,它是输入字典中的一个满足条件的单词。单词必须按字典顺序(区分大小写)输出。Sampleinputladder came tape soon原创 2022-05-09 13:56:52 · 174 阅读 · 0 评论 -
【Java每日一题,左二分查找】Where is the Marble?
Introduction现有 N 个大理石,每个大理石上写了一个非负整数。首先请你将这 N 块大理石按照它们上面所写数字的大小从小到大排序,然后按照排序后的顺序把这 N 个大理石从 1 ~ N 编号。之后请你回答 Q 个询问,每个询问问是否存在一个大理石上写着某个整数 x,如果存在,请你回答写着整数 x 的编号最小的大理石的编号,如果不存在,请你输出 x not found。Input有多组数据。每组数据第一行包括两个整数 N,Q,当输入为 N = 0, Q = 0 时,表示结束。否则接下来 Q原创 2022-05-09 13:20:50 · 137 阅读 · 0 评论 -
【Java每日一题,并查集】Ubiquitous Religions
Introduction当今世界上有许多不同的明星,你想知道你们学校的学生总共喜欢多少个不同的明星。你知道你的大学里有n个学生(0 < n ≤ 50000),你问每个学生他们喜欢的明星是不可能的。此外,许多学生不好意思说出他们喜欢哪个明星。避免这些问题的一种方法是问m (0≤ m ≤ n(n-1)/2)对学生,问他们是否喜欢相同的明星(例如,他们可能知道他们是否观看同一场演出)。从这些数据中,你可能不知道每个人具体喜欢哪个明星,但你可以知道校园里最多有多少个不同的被喜欢的明星。你可以假设每个学生最原创 2022-05-09 11:53:39 · 145 阅读 · 0 评论 -
【Java每日一题,BFS】Catch That Cow
Introduction张三想吃一顿全牛宴,所以用地上捡的石头雇佣傻子去为他抓牛你可以将图视为一条只有x的坐标的轴而你作为神通广大的傻子拥有两个能力你可以让牛当前位置由x变为x+1或者x-1你可以让牛当前位置由x变为2*x你能得出你最少需要多少次操作能将牛赶往指定地点吗?Input输入包含两个数字n,k分别代表牛的起始位置和目标地点的x坐标。n,k均大于等于0且小于等于100000Output输出最少的操作次数Sampleinput5 17output4Solution原创 2022-05-03 19:10:32 · 92 阅读 · 0 评论 -
【Java每日一题,字典树】 统计难题
IntroductionIgnatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).Input输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.注意:本题只有一组测试数据,处理到文件结束.Output对于每个提问,给出以该字符串为前缀的原创 2022-05-03 12:56:57 · 131 阅读 · 0 评论 -
【Java每日一题,前缀和】天上的星星
Description在一个星光摧残的夜晚,蒜头君一颗一颗的数这天上的星星。蒜头君给在天上巧妙的画了一个直角坐标系,让所有的星星都分布在第一象。天上有 nn 颗星星,他能知道每一颗星星的坐标和亮度。现在,蒜头君问自己 qq 次,每次他问自己每个矩形区域的星星的亮度和是多少(包含边界上的星星)。package week2;import java.util.Scanner;/** * @author liangyuanshao * @date 2022/4/30 - 14:49 */原创 2022-04-30 21:16:07 · 105 阅读 · 0 评论 -
【Java每日一题,二分】P2249 【深基13.例1】查找
package week1;import java.util.Scanner;public class Main2 { public static void main(String[] args) { Scanner s=new Scanner(System.in); int n=s.nextInt(); int k=s.nextInt(); int[] arr=new int[n]; for(int i=0;i<n;i++){ arr[.原创 2022-04-24 02:25:50 · 394 阅读 · 0 评论 -
【Java每日一题,深度搜索dfs】棋盘问题
Instruction在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n当为-1 -1时表示输入结束。随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋原创 2022-04-21 22:07:49 · 146 阅读 · 0 评论