
数据结构与算法
文章平均质量分 61
Continue。
这个作者很懒,什么都没留下…
展开
-
递归回溯-八皇后问题
文章目录一、八皇后问题介绍二、八皇后算法思路分析三、代码实现一、八皇后问题介绍八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法(92)。二、八皇后算法思路分析第一个皇后先放第一行第一列第二个皇后放在第二行第一列、然后判断是否 OK, 如果不 OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适的原创 2021-02-23 21:11:05 · 293 阅读 · 1 评论 -
递归回溯-迷宫问题
文章目录一、介绍二、代码约定三、代码与运行结果一、介绍二、代码约定map表示地图i,j表示从地图的哪个位置开始出发如果小球能到map[6][5]位置,则说明通路找到当map[i][j]为0表示该点没有走过,为1表示墙,为2表示通路可以走,为3表示该点已经走过但是走不通在走迷宫之前,需要确定一个策略(方法): 下->右->上->左,如果该点走不通再回溯三、代码与运行结果public class MiGong { public static void mai原创 2021-02-16 11:21:58 · 396 阅读 · 2 评论 -
中缀表达式转后转表达式,实现逆波兰计算器(简单版)
文章目录前言一、中缀表达式、后缀表达式是什么?二、中缀表达式如何转后缀表达式?三、逆波兰计算器代码(简单版)前言一、中缀表达式、后缀表达式是什么?在日常应用中,算术表达式中运算符总是出现在两个操作数之间,例如1+((2+3)*4)-5,这种形式称为中缀表达式。中缀表达式利于人的理解,但不便于计算机的处理。、因此需要将中缀表达式转换成后缀表达式,以方便计算机处理。所谓后缀表达式就是将运算符放在运算数之后。后缀表达式也称为逆波兰表达式。像中缀表达式:1+((2+3)4)-5,对应的后缀表达式为:12原创 2021-02-07 11:20:17 · 290 阅读 · 0 评论 -
数据结构与算法--栈
文章目录一、栈是什么?二、栈结构代码案例三、栈结构可以做什么?一、栈是什么?栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。简单来说我们可以把栈结构理解成枪的弹夹只存在两种行为,即出栈和入栈,先压进弹夹的子弹后打出,后压进弹夹的子弹原创 2021-01-16 20:26:28 · 172 阅读 · 1 评论 -
数据结构与算法--单向循环链表解决约瑟夫问题
文章目录一、什么是约瑟夫问题二、约瑟夫问题举例1.题目描述2.解题思路3.图例分析三、代码示例一、什么是约瑟夫问题约瑟夫问题(有时也称为约瑟夫斯置换,是一个计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”)二、约瑟夫问题举例1.题目描述设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止原创 2021-01-06 19:05:53 · 387 阅读 · 0 评论 -
稀疏数组&课后练习
目标:代码实现将稀疏数组保存到磁盘,再从磁盘读取恢复原始数组。代码如下public class SparseArray03 { public static void main(String[] args) throws FileNotFoundException { //先创建11*11的原始数组 int[][] chessArray1 = new int[11][11]; ...原创 2020-12-04 11:03:31 · 216 阅读 · 0 评论 -
数据结构与算法学习笔记一--稀疏数组
稀疏数组的应用场景思路:将棋盘用二位数组的方式记录问题:实现存盘退出和续上盘的功能问题分析:此时的二维数组很多的值为默认值0,若将二维数组保存则记录了很多没有意义的数据。稀疏数组基本介绍当一个数组大部分元素为0时,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组处理方法①、记录数组一共又几行几列,有多少个不同的值②、把具有不同值得元素的行列及值记录在一个小规模的数组中...原创 2020-12-04 11:01:40 · 274 阅读 · 0 评论 -
数据结构与算法学习笔记三--链表
文章目录一、什么是链表?二、链表特点三、单向链表1.单向链表介绍2.单向链表优缺点:3.单向链表示例代码:总结一、什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。链表又分为单向链表和双向链表,二者存在不同点,分别是:指向不同、功能不同、单双向不同二、链表特点链表是以节点的形式来存储的,是链式存储每个节点都包含data域、和next域(双向链表还存在原创 2020-12-22 21:06:59 · 371 阅读 · 0 评论 -
数据结构与算法学习笔记二--队列
文章目录一、队列是什么?官方对队列的解释是这样的二、代码示例1.在写代码之前我们需要做一些代码中的约定2.实现代码如下总结一、队列是什么?官方对队列的解释是这样的队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。我们可以将其与现实生活中的例子结合起来理解,如( 银行办业务,取排队小票,按顺序办业务; 超市结账,排队结账等),这些生活中随原创 2020-12-11 10:34:44 · 138 阅读 · 0 评论