![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法入门
文章平均质量分 60
dinosaur2004
正在努力学习的菜狗...
展开
-
深度优先搜索的简单应用——全排列列举
深度优先搜索(DFS,Deep First Search)是一种用于遍历或搜索树或图的算法。这个算法会尽可能深地搜索树的分支。当节点v的所在边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。深度优先搜索属于盲目搜索,它并不考虑目标在哪里,只是按照一种既定的策略进行搜索,直到找到目标或者遍历完整个图。原创 2024-02-11 16:28:58 · 284 阅读 · 1 评论 -
宽度优先遍历无向图
无向图是图论中常见的数据结构,其中边没有方向性,连接两个顶点的边是双向的。宽度优先遍历(Breadth-First Search, BFS)是一种用于遍历或搜索无向图的算法。与深度优先遍历不同,宽度优先遍历从图的某一顶点出发,逐层向外扩展,首先访问所有相邻的顶点,然后再访问这些顶点的未访问过的相邻顶点,以此类推。这种遍历方式在寻找最短路径、检测图的连通性等方面有着广泛的应用。原创 2024-02-13 21:05:55 · 406 阅读 · 1 评论 -
深度优先遍历无向图
无向图是图论中的一个基本概念,其中任意两个顶点之间都存在一条无向边。深度优先遍历(Depth-First Search, DFS)是一种用于遍历或搜索无向图的算法。DFS从图的某一顶点出发,访问尽可能深的分支,直到该分支的所有顶点都被访问过,然后回溯到上一个顶点,继续搜索下一个分支。这种遍历方式在图的连通性判断、寻找环、拓扑排序等问题中有着广泛的应用。原创 2024-02-13 21:00:17 · 686 阅读 · 1 评论 -
宽度优先搜索解决迷宫问题(最小步数求解)
在迷宫问题中,除了找到从起点到终点的路径外,有时我们还关心如何以最小的步数到达终点。宽度优先搜索(BFS)是一种非常适合解决这类问题的算法。BFS从起点开始,逐层向外扩展搜索,直到找到终点。由于它首先探索离起点最近的节点,因此找到的路径通常是步数最少的。原创 2024-02-12 21:08:14 · 499 阅读 · 1 评论 -
深度优先搜索解决迷宫问题(最小步数求解)
迷宫问题是一个经典的图搜索问题,其中迷宫由一系列的单元格组成,有些单元格之间可以相互通行,有些则不行。玩家的目标是从迷宫的起点出发,通过一系列合法的移动,最终到达迷宫的终点。深度优先搜索(DFS)是解决迷宫问题的一种有效算法。原创 2024-02-12 20:18:15 · 1133 阅读 · 1 评论 -
简单地创建链表和遍历链表
链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。链表都有一个头指针,一般以head来表示,存放的是一个地址。链表就如同车链子一样,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“尾节点”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。原创 2024-02-10 23:23:45 · 349 阅读 · 0 评论 -
简单的枚举实现解决abc+def=ghi问题
枚举,也称为列举法或穷举法,是一种暴力策略的具体体现。它的核心思想是将问题的所有可能答案一一列举出来,然后根据问题的条件检验每个答案是否合适,合适的答案就保留下来,不合适的答案则丢弃。它适用于问题规模较小或没有更好算法的情况。虽然它可能不是最优的解决方案,但在某些情况下确实是一种可行的选择。原创 2024-02-11 10:10:35 · 169 阅读 · 1 评论 -
用数组实现模拟链表
你可以使用两个数组来模拟链表的行为。一个数组用于存储数据(data),另一个数组用于存储下一个元素的位置(right)。原创 2024-02-11 09:39:15 · 257 阅读 · 1 评论 -
数组实现栈与回文字符串的判断
数组是一种常见的数据结构,而栈(Stack)则是一种具有特定操作顺序的数据结构。在栈中,元素的添加和删除操作都遵循“后进先出”(LIFO,Last In First Out)的原则。使用数组实现栈时,通常会维护一个栈顶指针,用于指示栈顶元素的位置。原创 2024-02-10 20:42:56 · 572 阅读 · 0 评论 -
使用数组简单地实现队列及队列操作
使用数组实现队列是一种常见的方法。队列是一种先进先出(FIFO)的数据结构,意味着最早被添加的元素将是最早被移除的元素。原创 2024-02-10 19:53:21 · 170 阅读 · 1 评论 -
简化版桶排序的实现
简化版桶排序是一种排序算法,其工作原理是将待排序的数组元素分散到有限数量的桶中,然后对每个桶中的元素进行排序(可能使用其他排序算法,或者以递归方式继续使用桶排序)。最后,将各个桶中的元素按照顺序依次取出,从而得到排序后的结果。需要注意的是,桶排序并不是比较排序,因此它不受O(n log n)下限的影响。此外,桶排序适用于元素值集合并不大的场景,例如一个评分系统是0-10分的机制。在这种情况下,可以设置一个包含11个桶的数组,每个桶对应一个分数,从而实现对分数的快速排序。原创 2024-02-10 18:14:21 · 173 阅读 · 1 评论