
算法
文章平均质量分 58
算法学习
城了个南
这个作者很懒,什么都没留下…
展开
-
第九届蓝桥杯个人赛省赛(软件类)JavaB组试题第九题
前言这个题 断断续续 写了俩天,老天爷都看不下去了,让我想到了,也不废话了,只需正确理解题目的一个点就行题目说:那么就是说一个岛经过淹没后有没有可能变成两个岛甚至更多岛如下Intput9..........###.###..###.###..###.###....###......###......###....##...##..........这个地图本来有3个岛,最上面一个岛经过淹没后变成了3座岛,下面2个岛结果淹没后全没了,所以有2个岛会被完全淹没。浅贴一下代码,代原创 2022-03-25 22:22:44 · 432 阅读 · 0 评论 -
Poj 2243 Knight Moves——A*+PriorityQueue的细节记录
Knight MovesDescriptionA friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the shortest closed tour of knight moves that visits each square of a given set of n squares on a chessboard exactly once. He thinks tha原创 2022-03-05 14:41:19 · 272 阅读 · 0 评论 -
算法—学期总复习
提取在这,密码1234,一起完善原创 2022-02-15 15:50:41 · 157 阅读 · 0 评论 -
八数码难题——bfs(java)
编号为1~8的8个正方形滑块摆成3行3列(有一个格式留空),如图所示。每次可以把与空格相邻的滑块(有公共边才算相邻).移动到空格中,而它原来的位置就成舍了新的空格。给定葫始高面和目标局面(用0表示空格),你的任务是计算出最少的移动步数。如果无法到达局面,则输出-1。原创 2021-12-15 23:52:56 · 1530 阅读 · 0 评论 -
1472: 寻找最大数(贪心)
给出一个正整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的正整数。求这个新的正整数的最大值。原创 2021-12-13 21:38:45 · 344 阅读 · 0 评论 -
JAVA设计模式-单例模式的六种实现
单例模式保证一个类只有一个实例,并且提供一个访问它的全局访问点。翻译 2021-12-12 12:57:37 · 180 阅读 · 0 评论 -
贪心算法-部分背包问题、活动安排、最优装载问题
贪心算法-部分背包问题、活动安排、最优装载问题,学习笔记原创 2021-12-10 21:39:49 · 1341 阅读 · 0 评论 -
动态规划之0-1背包问题
0-1背包问题,学习笔记。原创 2021-12-10 13:37:41 · 697 阅读 · 0 评论 -
动态规划之石子合并问题
问题思路假设有 1 2 3 三堆石头 总代价计算如下:我们看到总代价 必然包括 三堆石头的总和 6,剩下代价看 1-2 和2-3 哪个代价最小,那么总代价为6加上最小代价。所以有公式 mm[1][3] = MIN(mm[1][2],mm[2][3]) + sum(1,3)推广到一般式 mm[1][n] = MIN(mm[1][n-1],mm[2][n]) + sum(i,n)推广到一般式 mm[i][j] = MIN(mm[i][j-1],mm[i+1][j]) + sum(i,n)自原创 2021-11-25 17:59:59 · 895 阅读 · 0 评论 -
动态规划之最长递增子序列
文章目录思想1、穷举2、动态规划实现实现思想1、穷举容易想到,穷举所有可能,1 7 9,1 7 8,1 3 5 9 ,1 3 5 8…2、动态规划实现(1)一个数组存储输入数据——aa(2)一个数据保存到第i位为止,的最大长度——bb(3)初始bb[1] = 1,因为只有一个数,它本身的长度位1(4)bb数组第二位,bb[2],如果aa[2]>aa[1],那么bb[2] = bb[1]+1,否则bb[2] = 1(5)bb数组第三位,bb[3],如果aa[3]>aa[2]&原创 2021-11-24 20:14:13 · 147 阅读 · 0 评论 -
动态规划-矩阵连乘
文章目录前言一、穷举法与备忘库法1、穷举法2、备忘录法二、动态规划法前言游戏规则:矩阵之间的连乘与数的连乘或连加不同,不同的 连乘的顺序 最终计算的次数也不同。如下一、穷举法与备忘库法1、穷举法列举所以的可能的计算次序,计算所有的计算次序所用的次数,然后找出最少的计算次序。2、备忘录法存在很多子问题已经别求解,通过数组存储已经求解的问题,递归求解之前,先检查是否已经求解,如果已经求解,直接使用。 private static int lookupChain(int i, int.原创 2021-11-20 20:35:32 · 2549 阅读 · 0 评论 -
动态规划之最大字段和
1、思路最大字段和问题可以有三种解法:1.穷举法2.分治法3.动态规划法2、穷举法穷举每一种可能,两到三层循环,既可以搞定。时间复杂度O(n2)或O(n3)。 private static int MaxSubSum(int[] aa) { int T,bestI=0,bestJ=0; int maxSum=aa[0]; for (int i = 0; i < aa.length; i++) { for (int j = i+1; j < aa.leng.原创 2021-11-17 22:33:40 · 2613 阅读 · 0 评论 -
算法分析-DP(Dynamic Programming)之LCS(Long Common Subsequence)
文章目录前言一、问题描述二、问题解决1.穷举搜索法2.动态规划法(填表法)三、算法实现1.递归实现2.备忘录法3.动态规划法四、优化1.不使用b数组2.滚动数组前言鸡爸爸对自家的三儿子产生了怀疑,因为他没有继承自己优良的基因,于是鸡爸爸带着他去找了鉴定中心,小鸡内心忐忑不安,因为爸爸看上去很生气,对他没有了以往的温柔。此时一切只能交给鉴定结果了…经过缴费抽样后,有了以下结果,S1是鸡爸爸的基因序列,S2是小鸡的基因序列。S1=ACCGGTCGAGTGCGCGGAAGCCGGCCGAA... S原创 2021-11-11 16:06:57 · 692 阅读 · 0 评论 -
算法分析-递归之汉诺塔(java)
文章目录前言一、汉诺塔汉诺塔游戏二、使用步骤1.引入库2.读入数据总结前言汉诺塔问题(梵塔问题, Tower of Hanoi)汉诺塔来源于一个印度的传说故事:上帝在创造世界时做了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上规定:在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘有预言说,这件事完成时地球会在一瞬间毁灭,也有人相信婆罗门至今仍在一刻不停地搬动着圆盘如果移动一个圆盘需要一秒钟,请大家预原创 2021-11-09 22:00:29 · 885 阅读 · 0 评论 -
算法题-报数游戏(java)
思路:首先用一个数组来保存同学信息。for(int h=1;h<=n;h++) { a[h]=h; }其次依照题目,需要一个数来记录此时是正向报数1->n,还是逆向报数n->1。然后通过函数判断是否是满足条件(7的倍数或包含7)的数。以及该同学第几次报数了最后输出 实际数import java.util.Scanner;public class Oj_PositiviesGames { static int z=0; public static vo.原创 2021-11-09 20:57:02 · 3631 阅读 · 1 评论 -
算法题-骨牌覆盖(java)
思路:可以理解为排列组合和递归的结合,横杠每次只能两个一起出现,并且在同一列。假设n为6。初始化时 令 num = 1,即全||||||的情况。如果n为偶数,num++,即全 ===的情况。递归第一次:=||||,=有C(5,4)种排放方式。递归第二次:==|| ,=有C(4,2)种排放方式。递归第三次:n==0,递归条件为n>0,结束递归。import java.util.Scanner;public class Oj6 { static double num=1;//全||||.原创 2021-11-09 20:15:54 · 506 阅读 · 0 评论 -
算法之快速排序
快速排序基本思想核心算法如下1、QuickSort:2、partition: 以下俩个方法类似,下图为第一个方法的配图改进1、最坏情况2、最好情况3、一般情况4、主定理5、Random改变基准数改QuickSort:汇总基本思想(1)分解(divide):对于数组 a [p : r],以a[ p ]为基准将其分解为三段 a[ p ]的a[p : q-1],a[ q ] ,a[q+1 : r],前者都比a[q]小,后者都比a[q]大。(2)递归求解(conquer)递归调用快速排序算法,分别对a[p原创 2021-10-31 23:21:00 · 363 阅读 · 0 评论