算法刷题笔记
文章平均质量分 59
腰果侠
精简实用,记录Bug。
展开
-
Floyd-最短路径
路径 问题描述 小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图中的最短路径。 小蓝的图由 2021 个结点组成,依次编号 1 至 2021。 对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条长度为 a 和 b 的最小公倍数的无向边相连。 例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无向边,长度为 24;结点 15 和结点 25 之间有一条无向原创 2022-05-16 18:26:51 · 194 阅读 · 0 评论 -
二分法-分巧克力
分巧克力 问题描述 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 形状是正方形,边长是整数 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。 当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么? 蓝桥杯-分巧克力 完整代码 import java.util.Scanner; public class 分巧克力 { static int[原创 2022-05-16 18:11:34 · 157 阅读 · 0 评论 -
日期处理-日期问题
日期问题 问题描述 小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。 比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。 给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗? 样例输原创 2022-05-16 15:46:45 · 247 阅读 · 0 评论 -
前缀和-k倍区间
k倍区间 题目描述 给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗? (1 <= N, K <= 100000) (1 <= Ai <= 100000) 蓝桥杯-k倍区间 解题思路 方法一: 前缀和暴力,只能过20% 完整代码 import java.util.Scanner; public class k倍区间原创 2022-05-16 11:07:45 · 98 阅读 · 0 评论 -
迷宫问题(bfs)广搜,队列
迷宫 题目描述 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式, 其使用的步数最少,在步数原创 2022-05-16 09:52:59 · 291 阅读 · 0 评论 -
高精度算法
文章目录高精度和进制转换 高精度和进制转换 问题描述 输入进制B,再输入两个B进制的数。数字的每一位属于{0,1,2,3,4,5,6,7,8,9,A,B……},每个数字长度<=2000位。输出两数之和,用B进制表示。 P1604 B进制星球 解题思路 用字符数组接收输入数据,逆序转换为整型数组,再求和进位取余,最后进制转换输出。 完整代码 import java.util.Scanner; public class Main { static int[] a=new int[2002]; sta原创 2022-05-04 23:15:48 · 57 阅读 · 0 评论 -
深度优先搜索(dfs)
文章目录全排列问题 全排列问题 问题描述 按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。 P1706 全排列问题 解题思路 dfs+回溯。 完整代码 import java.util.Scanner; public class Main { static int n; static int[] a=new int[10]; static int[] vis=new int[10]; public static void原创 2022-05-04 00:03:57 · 82 阅读 · 0 评论 -
递归与递推
文章目录数的划分 数的划分 问题描述 将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。有多少种分法? P1025数的划分 解题思路 二维矩阵打表。 1.去掉一个盘子和一个苹果:f[i-1][j-1] 2.每个盘子都去掉一个苹果:f[i][j-i] 公式:f[i][j]=f[i-1][j-1]+f[i][j-i] 完整代码 ...原创 2022-05-03 21:29:41 · 196 阅读 · 0 评论 -
动态规划之二维数组系列——01背包,不同的子序列
01背包问题 题目描述 小明有一个容量为 V 的背包。 这天他去商场购物,商场一共有 N 件物品,第 i 件物品的体积为 wi,价值为 vi。 小明想知道在购买的物品总体积不超过 V 的情况下所能获得的最大价值为多少。 解题思路 现假设 V 为 7,N 为 4,他们的 w 分别为 1,3,4,5 。v 分别为1,4,5,7。 要想解决这个问题可以先建立一个 N 行 V 列的二位数组,即解决此问题的dp数组,值为此时背包可装下物品的最大价值。 解题过程 当背包容积为0时,无法装下任意体积的商品,故第一列全为零原创 2022-04-29 18:30:40 · 512 阅读 · 0 评论 -
十种排序算法总结
文章目录基础的排序冒泡排序选择排序插入排序希尔排序分治法快速排序归并排序堆排序非比较排序计数排序桶排序基数排序 基础的排序 冒泡排序 谁大谁上,每一轮都把最大的顶到天花板,效率太低O(n^2),掌握swap。 选择排序 效率较低,但经常用它内部的循环方式来找最大值和最小值,O(n^2)。 插入排序 虽然平均效率低,但在序列基本有序时,它很快,所以也有其使用范围。Arrays工具类在1.7做了较大改动。 希尔排序 希尔排序(缩小增量排序),是插入排序的改良,对空间思维训练有帮助。 分治法 1.子问题拆分 2.原创 2022-01-09 21:20:12 · 231 阅读 · 0 评论 -
刷题笔记02-递归
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r3hKiT3X-1679648283281)(D:\code\算法刷题笔记\img\母牛.png)]有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?原创 2023-03-24 17:01:34 · 112 阅读 · 0 评论 -
刷题笔记01-字符串
例如,字母"A"后面第4个字母是"E".“E"代替"A”。因此,“China"应译为"Glmre”。要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.。原创 2023-03-24 16:57:47 · 83 阅读 · 0 评论