
★嵌入式数据结构及算法(C语言)
文章平均质量分 50
嵌入式入门到精通第八门课,作为一线开发及面试官,嵌入式大厂对于数据结构和算法的考察目前放在非常重要的位置。本教程会从嵌入式面试的角度,梳理基础的数据结构与嵌入式算法,并附带实际代码及场景应用。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
CodeAllen嵌入式
优快云博客专家,曾中科院无人机软件研发,现TOP通信外企高级软件工程师,专注通信电子及嵌入式软件方向职业规划,全网技术矩阵粉丝10w+,欢迎交流一起成长!
展开
-
【华为机试题分析-C/C++】知识点分类总结
常规的面试题考察主要是集中在字符串,数组和队列字符串原创 2022-06-28 20:44:54 · 958 阅读 · 0 评论 -
学习数据结构方法及资源分享
我自己本科是电子信息工程,是没有学习过数据结构与算法的,所以也是自己从小白一路走过来,这个过程走过很多弯路,所以这也是我自己学习的经验之谈,要是观点不同非常正常。先大概说下目录(几个想说的点):为什么要学数据结构?数据结构要学什么?怎么学数据结构?资源推荐为什么要学数据结构?首先要明确的一点就是数据结构不是具体的语言,主要是一种思维,很多同学私聊问的最多就是用什么语言学习数据结构。其实原则上什么语言都可以,当然这就引出了需要学习哪种语言的问题,这个之后再单说。因此也就引出了学习数据结构的原创 2021-03-01 20:58:08 · 1213 阅读 · 0 评论 -
【C++】学习网站篇
原创 2022-05-12 21:34:10 · 931 阅读 · 0 评论 -
C语言数据结构与算法专栏目录
后序会开一个《嵌入式数据结构专栏》主要为了学习嵌入式的同学,软件能力提升和大厂面试能力,感谢大家关注!《C语言数据结构与算法》专栏已经更新完毕,共计72篇分享,后期会逐渐修改错误并添加内容0 数据之间的关系有哪些?1 如何度量一个算法的好坏?2 常见的时间复杂度实例3 什么是线性表?4 线性表的顺序存储结构5 线性表的链式存储结构6 单链表的整表创建和删除7 静态链表8 循环链表9 双向链表10 什么是栈?...原创 2021-05-23 22:15:20 · 1070 阅读 · 2 评论 -
【华为机试题分析】 6 质数因子
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )输入一个整数按照从小到大的顺序输出它的所有质数的因子,以空格隔开。输入:180输出:2 2 3 3 5首先收下概念,质因数(或质因子)在数论里是指能整除给定正整数的质数,每个合数都可以写成几个质数相乘的形式,那么这几个质数就都叫做这个合数的质因数,比如10=2×5,那么2和5就是10的质数因子。思路1:最大质因数必小于输入数字的平方根思路2:如果一个数在它的根号左边或右边没有质数,那么原创 2022-06-29 17:06:20 · 998 阅读 · 0 评论 -
【华为机试题分析】 5 进制转换
这题用C语言的小伙伴一看到可能会有点蒙,这还需要算法逻辑?直接输出不就完啦,是的,这就是C语言最简单的思路原创 2022-06-28 21:56:05 · 953 阅读 · 0 评论 -
【华为机试题C/C++】 HJ4 字符串分隔
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。连续输入字符串(每个字符串长度小于等于100)依次输出所有分割后的长度为8的新字符串。本题考察的是字符串,简单难度。原创 2021-02-24 00:26:15 · 1109 阅读 · 0 评论 -
【华为机试题C/C++】 HJ3 明明的随机数
明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。第一行先输入随机整数的个数 N。接下来的 N 行每行输入一个整数,代表明明生成的随机数。具体格式可以参考下面的"示例"。可以定义两个数组,第一个数组做参数的时候判断是否为0则可以去重。1≤n≤1000 ,输入的数字大小满足 1≤val≤500。输出多行,表示输入数据处理后的结果。根据题目意思就是对数据进行去重排序。考察点为数组,难度较难。原创 2021-02-23 22:12:41 · 936 阅读 · 1 评论 -
【华为机试题C/C++/Python】 HJ2 计算某字符出现次数
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)遍历字符串,因为大写字母的ASCII值和小写字母的ASKII值的差是-32,作为比较条件参与判断。第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。tolower:把字母字符转换成小写,非字母字符不做出处理。输出输入字符串中含有该字符的个数。isupper:可以用来判断字符c是否为大写英文字母。可以定义字符串保存输入,然后获取需要对比的字符。原创 2021-02-22 23:21:51 · 1002 阅读 · 1 评论 -
【华为机试题C/C++/Python】 HJ1 字符串最后一个单词的长度
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)循环结束后,最后一个单词的长度即为字符串总长度减去最后一个单词起始位置与末尾位置的差值。可以创建一个字符串用来存储字符串,使用使用stelen函数获取长度。输入一行,代表要计算的字符串,非空,长度小于5000。从字符串末尾开始向前遍历,找到最后一个单词的起始位置。输出一个整数,表示输入字符串最后一个单词的长度。说明:最后一个单词为nowcoder,长度为8。这题是考察字符串的使用。原创 2021-02-21 10:10:52 · 1003 阅读 · 1 评论 -
【算法入门】1.算法是什么?
要想成为一名合格的程序员,除了至少掌握一门编程语言,更重要的是多动手实践,积累足够的代码量,提升自己“遇到问题,解决问题”的能力。任何一门编程语言的学习,本质就是学习它规定的语法,整个过程只能死记硬背,几乎没有捷径。但是,提高“解决问题”的能力是有捷径可寻的,比如掌握一些算法。提到“算法”,很多人都觉得它高深莫测、晦涩难懂。事实上的确存在一些算法,学员必须具备优秀的数学基础和编程能力才能驾驭。但对于一位刚刚接触算法的初学者来说,根本不用学习这些“高难度”的算法,掌握一些简单的算法就足以应付实际.转载 2021-12-19 21:56:34 · 1018 阅读 · 0 评论 -
【大话数据结构C语言】71 排序方法总结
内排序和外排序根据排序记录是否全部被放置在内存中,将排序分为内排序和外排序两种,外排序需要在内存之间多次交换数据才能进行所以主要讨论的是内排序七种主要的排序方法(四类)指标对比从综合角度看,经过优化的快速排序是性能最好的排序算法,但是还是要根据不同的场景选择不同的算法开应对...原创 2021-05-23 22:33:04 · 857 阅读 · 0 评论 -
【大话数据结构C语言】70 快速排序
目录背景快速排序复杂度快速排序的优化背景快速排序是图灵奖获得者 Tony Hoare设计提出的快速排序被誉为20世纪十大算法之一希尔排序是直接插入排序的升级,属于插入排序堆排序是简单选择排序的升级,属于选择排序类快速排序是冒泡排序的升级,属于交换排序类快速排序是增加了记录的比较和移动的距离,将关键字较大的记录从前面直接移到后面,关键字较小的记录从后边直接移到前面,从而减少了比较次数和移动交换的次数快速排序快排的基本思想是,通过一趟排...原创 2021-05-23 22:00:17 · 1300 阅读 · 9 评论 -
【大话数据结构C语言】69 归并排序(递归和迭代实现)
堆排序之所以效率比较高是利用了完全二叉树,但是堆排序的设计本身是比较复杂的那就引出一个问题,有没有更简单的使用完全二叉树来排序的算法呢?这就引出了归并排序算法归并排序归并排序就是利用归并的思想实现的排序方法,原理是假设初始序列含有n个记录,则可以看出是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或者1的有序子序列;再两两归并。。。。如此反复,直至得到一个长度为n的有序序列为止,这种排序方法称为2路规定排序其排序的过程就是完全二叉树...原创 2021-05-23 15:11:59 · 985 阅读 · 2 评论 -
【大话数据结构C语言】68 堆排序
堆排序算法是利用堆进行排序的方法基本思想是将待排序的序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根结点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次小值,如此反复执行,最后就可以得到一个有序序列了堆排序的时间复杂度为nlogn,这个性能要远远好于冒泡,简单选择,直接插入排序的时间复杂度空间复杂度上,它只有一个用来交换的暂存单元,也是非常的不错但是由于记录的比较与交换是跳跃..原创 2021-05-22 23:38:38 · 879 阅读 · 0 评论 -
【大话数据结构C语言】67 希尔排序
众所周知,排序算法最重要的就是速度,但是前边介绍的几个算法时间复杂度都是n的平方这个问题其实困扰了计算机界前辈们很久,一度有人认为“排序算法时间复杂度不可能突破n方”但是,终有一天还是有科学家发现了,并且接连就出现好几种可以超越n方的排序算法,把内培训算法的时间复杂度提升到了nlogn希尔排序的时间复杂度是,比前边几种的要好希尔排序事实上还是直接插入排序,然后分成几个小组分别排序#include <stdio.h>void ...原创 2021-05-22 23:17:05 · 867 阅读 · 0 评论 -
【大话数据结构C语言】66 直接插入排序
直接插入排序的基本操作是将一个记录插入到已经排好的有序表中,从而得到一个新的,记录数增1的有序表直接排序的时间复杂度也是n的平方,但是其性能比之前的冒泡排序和选择排序还是要好的#include <stdio.h>void InsertSort(int k[], int n){ int i, j, temp; for( i=1; i < n; i++ ) { if( k[i] < k[i-1] ) {原创 2021-05-22 22:07:18 · 872 阅读 · 0 评论 -
【大话数据结构C语言】65 简单选择排序
选择排序的基本思想是每一次记录中选取关键字最小的记录作为有序序列的第i个元素从代码上看,时间复杂度和冒泡一样都是n的平方( 所以用到它的时候,数据规模越小越好),但是实际处理次数还是少很多的,选择排序的效率更高些#include <stdio.h>void SelectSort(int k[], int n){ int i, j, min, temp, count1=0, count2=0; for( i=0; i < n-1; i++ ...原创 2021-05-22 21:45:18 · 856 阅读 · 0 评论 -
【大话数据结构C语言】64 冒泡排序
冒泡排序的要点两两注意是相邻的两个元素的意思如果有n个元素需要比较n-1次,每一轮减少1次比较既然叫冒泡排序,那就是从下往上两两比较,所以看上去就跟泡泡往上冒一样。冒泡排序是最简单的一种排序,基本思想就是两两比较相邻的关键字,如果反序则交换,直到没有反序为止冒泡排序的一般思路:#include <stdio.h>void BubbleSort(int k[], int n){ int i, j, temp, count1=0, count2=0...原创 2021-05-21 23:58:38 · 1043 阅读 · 3 评论 -
【大话数据结构C语言】63 排序算法概念
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324程序员技术交流②群:371394777 排序的概念举例:在排序问题中,通常将数据元素称为记录。显然我们输入的是一个记录集合,排序后输出的也是一个记录集合。所以我们可以将排序看成是线性表的一种操作。排序的依据是关键字之间的大小关系,那么对同一记录集合,针对不同的关键字进行排序,可以得到不同序列。排序的稳定性假设ki=k...原创 2021-05-21 00:05:24 · 902 阅读 · 2 评论 -
【大话数据结构C语言】62 散列表(哈希表)查找
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324程序员技术交流②群:371394777 什么是散列表?在初中的数学课本中学习过函数的相关知识,给定一个 x,通过一个数学公式,只需要将 x 的值带入公式就可以求出一个新的值 y。哈希表的建立同函数类似,把函数中的 x 用查找记录时使用的关键字来代替,然后将关键字的值带入一个精心设计的公式中,就可以求出一个值,用这个值来表示记录存储的哈希地址。即:数...原创 2021-05-20 23:19:36 · 1631 阅读 · 10 评论 -
【大话数据结构C语言】61 红黑树和B+树
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324程序员技术交流②群:371394777 红黑树(R-B TREE,全称:Red-Black Tree),本身是一棵二叉查找树,在其基础上附加了两个要求: 树中的每个结点增加了一个用于存储颜色的标志域; 树中没有一条路径比其他任何路径长出两倍,整棵树要接近于“平衡”的状态。 这里所指的路径,指的是从任何一个结点开始,一直到其子孙的叶子结点的长度;接近于...原创 2021-05-20 22:45:53 · 1276 阅读 · 5 评论 -
【大话数据结构C语言】60 B树
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324程序员技术交流②群:371394777 B树(B-tree)是一种平衡的多路查找树,2-3树和2-3-4树就是B树的特例结点最大的孩子数目称为B树的阶(order),因此,2-3树是3阶B树,2-3-4树是4阶B树一个m阶的B树具有如下属性:1.如果根结点不是叶结点,则其至少有两棵子树2.每一个非根的分支结点都有k-1个元素(关键字)和k个孩子,其中...原创 2021-05-20 22:41:32 · 2654 阅读 · 0 评论 -
【大话数据结构C语言】59 2-3-4树
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324程序员技术交流②群:3713947772-3-4树其实就是对2-3树的扩展,包括了4结点的使用一个4结点包含中小大三个元素和四个孩子,一个4结点要不没有孩子,要不具有4个孩子如果某个4结点有孩子的话,左子树包含小于最小元素的元素:第二子树包含大于最小元素,小于第二元素的元素:第三子树包含大于第二元素,小于最大元素的元素:右子树包含大于最大元素的元素...原创 2021-05-20 00:04:16 · 5535 阅读 · 0 评论 -
【大话数据结构C语言】58 多路查找树(B树)之2-3树
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324程序员技术交流②群:371394777 多路查找树由于涉及到去内存读取数据的问题,此时内存存取外村次数成为实现效率上的瓶颈,这就迫使要打破每一个结点只存储一个元素的限制,为此引入了多路查找树的概念多路查找树,其每一个结点的孩子树可以多于两个,且每一个结点处可以存储多个元素2-3树2-3树其中每一个结点都具有两个孩子(2结点),或者三个孩子...原创 2021-05-19 22:35:13 · 1014 阅读 · 1 评论 -
【大话数据结构C语言】57 平衡二叉树(AVL树)
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 平衡二叉排序树平衡二叉树是一种二叉排序树,其中每一个结点的左子树和右子树的高度差至多等于1有两位俄罗斯数学家 G.M. Adelson-Velsky和E.M. Landis发明一种解决平衡二叉树的算法,所以很多资料称这样的平衡二叉树为AVL树平衡因子:每个结点都有其各自的平衡因子,表示的就是其左子树深度同...原创 2021-05-18 22:06:53 · 1348 阅读 · 0 评论 -
【大话数据结构C语言】56 二叉排序树的查找、插入和删除
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 目录二叉排序树查找关键字二叉排序树中插入关键字二叉排序树中删除关键字总结二叉排序树查找关键字二叉排序树中查找某关键字时,查找过程类似于次优二叉树,在二叉排序树不为空树的前提下,首先将被查找值同树的根结点进行比较,会有 3 种不同的结果: 如果相等,查找成功; 如果比较结果为根结点的关键字...转载 2021-05-16 21:58:14 · 1521 阅读 · 0 评论 -
【大话数据结构C语言】55 二叉排序树
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 本文开始介绍一种查找表 -动态查找表动态查找是什么意思呢?在查找的过程中,如果查找成功可以对齐进行删除,如果失败的话,表示图中没有该关键字,可以将该关键字插入到表中什么是二叉排序树?二叉排序树(Binary Sort Tree),又称为二叉查找树。或者是一棵空树,或者是具有下列性质的二叉树 若左子...原创 2021-05-16 18:11:07 · 2481 阅读 · 0 评论 -
【大话数据结构C语言】54 线性索引查找
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 前边几种比较高效的查找方法都是基于有序的基础之上的,事实上,很多数据都是增长的非常快要保证记录全部是按照当中的某个关键字有序,其时间代价是非常高昂的,这种数据一般都是采用先后顺序存储的对于这样的查找表,我们怎么做到快速找到需要的数据呢?方法就是 -索引索引是为了加快查找速度而设计的一种数据...原创 2021-05-16 15:48:12 · 6000 阅读 · 0 评论 -
【大话数据结构C语言】53 斐波那契查找(黄金分割法查找)
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 和题目一样,这个算法是按照黄金分割法作为原理的黄金分割就是0.618:1先看下菲波那切数列代码实现:#include <stdio.h>#define MAXSIZE 20void fibonacci(int *f){ int i; f[0] = 1; ...原创 2021-05-16 11:14:41 · 1074 阅读 · 0 评论 -
【大话数据结构C语言】52 折半查找和插值查找(按比例查找)
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 折半查找(Binary search),又称作二分查找它的前提是线性表中的记录必须是关键码有序(通常是从小到大有序),线性表必须采用顺序存储在折半查找之前对查找表按照所查的关键字进行排序的意思是:若查找表中存储的数据元素含有多个关键字时,使用哪种关键字做折半查找,就需要提前以该关键字对所有数据进行排序。...原创 2021-05-15 21:41:49 · 2418 阅读 · 6 评论 -
【大话数据结构C语言】51 查找算法
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 静态查找和动态查找静态查找:数据集合稳定,不需要添加,删除元素的查找操作。动态查找:数据集合在查找的过程中需要同时添加或删除元素的查找操作。关键字在查找表查找某个特定元素时,前提是需要知道这个元素的一些属性。例如,每个人上学的时候都会有自己唯一的学号,因为你的姓名、年龄都有可能和其他人是重复的,唯独学号不会重复...原创 2021-05-15 21:04:06 · 3571 阅读 · 1 评论 -
【大话数据结构C语言】50 关键路径
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 上一篇的拓扑排序是解决工作是否顺序进行的问题,但是有时候需要解决工程完成需要的最短时间问题以造车举例子请问汽车产造一辆汽车,最短需要多少时间呢?其中生产轮子:0.5天,发动机:3天,底盘:2天,外壳:2天,其他零部件:2天,全部零部件集中到一处:0.5天,组装成车并测试:2天这里边要考...原创 2021-05-15 20:02:56 · 987 阅读 · 1 评论 -
【大话数据结构C语言】49 拓扑排序
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 拓扑排序概念一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图工程或者某种流程都可以分为若干个小的工程或者阶段,我们称这些小的工程或阶段为“活动”在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称之为AOV网(A...原创 2021-05-15 16:39:53 · 975 阅读 · 0 评论 -
【大话数据结构C语言】48 最短路径(弗洛伊德算法)
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 迪杰特斯拉算法对比弗洛伊德算法O(n^2) O(n^3)可见前者是明显优于后者的因为迪杰特斯拉算法求的是一个顶点到所有顶点的最短路径,但弗洛伊德算法是求所有顶点到所有顶点的最短路径。弗洛伊德算法非常简洁优雅弗洛伊德算法弗洛伊德的核心思想是:对于网中的任意两个顶点(例如顶点 A 到顶点 B)来说,之间的...原创 2021-05-15 01:03:51 · 924 阅读 · 0 评论 -
【大话数据结构C语言】47 最短路径(迪杰斯特拉算法)
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 在网图和非网图中,最短路径的含义是不同的。网图是两顶点经过的边上权值之和最少的路径。非网图是两顶点之间经过的边数最少的路径。我们把路径起始的第一个顶点称为源点,最后一个顶点称为终点。关于最短路径的算法,常用的有两种:迪杰斯特拉算法(Dijkstra)弗洛伊德算法(Floyd)求V0到V8的最短路...原创 2021-05-15 00:26:35 · 1092 阅读 · 0 评论 -
【大话数据结构C语言】46 最小生成树(克鲁斯卡尔算法)
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 无论是普里姆算法(Prim)还是克鲁斯卡尔算法(Kruskal),他们考虑问题的出发点都是:为使生成树上边的权值之和达到最小,则应使生成树中每一条边的权值尽可能的小。普里姆算法是以某顶点为起点,逐步找各个顶点上最小权值的边来构建最小生成树的kruskal.cint Find(int *parent, int ...原创 2021-05-14 22:33:39 · 1067 阅读 · 0 评论 -
【大话数据结构C语言】45 最小生成树(普里姆算法)
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 首先明确下概念,我们把构造连通网的最小代价生成树叫做最小生成树(Minimum Cost Spanning Tree)给定一个连通网,求最小生成树的方法有:普里姆(Prim)算法 &克鲁斯卡尔(Kruskal)算法普里姆算法(Prim)构建一个邻接矩阵普里姆算法在找最小生成树时,将顶点分...原创 2021-05-11 00:42:29 · 1201 阅读 · 0 评论 -
【大话数据结构C语言】44 图的广度优先遍历
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 广度优先遍历(BreadthFirstSearch),又称为广度优先搜索,简称BFS。如果以之前我们找钥匙的例子来讲,运用深度优先遍历意味着要先彻底查找完一个房间再开始另一个房间的搜索。但我们知道,钥匙放在沙发地下等犄角旮旯的可能性极低,因此我们运用新的方案:先看看钥匙是否放在各个房间的显眼位置,如果没有,再看看各个房间的抽屉...原创 2021-05-09 23:50:57 · 1032 阅读 · 0 评论 -
【大话数据结构C语言】43 图的应用 - 马踏棋盘算法
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 题目要求:国际象棋的棋盘为8*8的方格棋盘,现将“马”放在任意指定的方格中,按照“马”走棋的规则将“马”进行移动。要求每个方格只能进入一次,最终使得“马”走遍棋盘64个方格。马的走法就是以下几种对于在n*n的棋盘上,当n>=5且为偶数的时候,以任意点作点都有解回溯法:之前我们...原创 2021-05-09 23:42:05 · 1531 阅读 · 4 评论