- 博客(3)
- 收藏
- 关注
原创 C++ 广度优先搜索
广度优先搜索和一条路走到底走不通再回头的深度优先搜索不同的是,他按层进行搜索的,会按照设定好的方向例如[右, 上, 左, 下]的逆时针方向,先将四个方向的下一个点能走的全部放进一个队列种,然后按照队列的顺序依次走下一层,所以广度有点搜索不仅可以判断连通性的问题还可以判断到达终点需要的步数;同样以迷宫S. . .##. .##. .T. . .为例子来进行广度优先搜索:首先由于需要用到队列所以需要队列的头文件,依然是字符地图,方向数组以及地图大小和起始点,这里为了判断需要的步数所以定义了一个结构
2020-11-18 17:47:33 610
原创 C++ 深度优先搜索
深度优先搜索是指按照一定的方向不停向更深层搜索,只有当走不通时才会回到回溯到上一层,按照下一个方向进行搜索:举个例子:S. . .##. .##. .T. . .这样一个4*4的迷宫,其中’ . '是可以走的路,‘ # ’是墙壁,S是起点,T是终点,很明显这是可以走的通的。但是按照深度优先搜索的思路,首先需要规定一个方向数组也就是首先到达一层时会按照设计好的方向去尝试,假如尝试成功也就是走的通的话就在这个点进入下一层。假设规定的规定的方向是[右, 上, 左, 下]按照逆时针的优先级进行方向的判定
2020-11-18 17:17:01 717
原创 二分查找的几种模式
二分查找是一种非常基础的搜索方法,也具有固定的模板。首先是朴素的二分查找方法,也就是在一堆排好序的数组中搜索一个数字(没有排好序也可以,可以自己手动排序):首先是给定数组length[],数组a的长度n,以及查找的数字m,这时候只需要进行一下步骤就可以,这里的写法比较多种多样,但是要是理解了也万变不离其宗,首先是左右指针分别指到首位位置,之后进行二分循环,循环条件这里是写法可以不同的地方,但是写左边小等右边最后的结果一定是会出现左边right,右边left的结果,这里可以用来解决重复数的问题,假如一个数
2020-11-03 22:05:19 257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人