bfs
来源:互联网 发布:知乎怎么添加关注话题 编辑:程序博客网 时间:2024/06/09 13:55
bfs (广搜)
利用队列:先将初始状态添加到队列里,此后从队列的最前端不断取出状态,将相邻但尚未访问的状态加入队列,直至队列被取空或找到问题的解。
搜索顺序:距离初始状态由近及远的顺序
应用:最短路径,最少操作
/* Vs 起点 Vd 终点 */bool BFS(Node& Vs, Node& Vd){//常用结构体queue<Node> Q;Node Vn, Vw;int i;//用于标记,当vis[i][j]==true时,说明节点访问过bool vis[MAXL][MAXL];//四个方向int dir[][2] = {{0, 1}, {1, 0},{0, -1}, {-1, 0}};//初始状态将起点放进队列QQ.push(Vs);vis[Vs.x][Vs.y] = true;//设置节点已经访问过了!while (!Q.empty()){//队列不为空,继续搜索!//取出队列的头VnVn = Q.front();Q.pop();for(i = 0; i < 4; ++i){Vw = Node(Vn.x+dir[i][0], Vn.y+dir[i][1]);//计算相邻节点if (Vw == Vd){//找到终点了!......//处理,记录路径 return true;//返回}if (isValid(Vw) && !vis[Vw.x][Vw.y]){//Vw是一个合法的节点并且未访问 Q.push(Vw);//加入队列Qvis[Vw.x][Vw.y] = true;//标记已访问 }}}return false;//无解}再做两道题,熟悉后把dfs ,bfs 放一起
0 0
- BFS
- bfs
- BFS
- BFS
- bfs
- BFS
- bfs
- BFS
- BFS
- bfs
- BFS
- BFS
- BFS
- BFS
- BFS
- bfs
- BFS
- BFS
- 用ModelSim、Mars和Verilog做计算机组成原理CPU实验注意事项
- 思维--nkoj3653七的倍数
- AndroidStudio基本的快捷键整理
- HDU 1753 大明A+B(大小数加法,C模拟,Java BigDecimal)
- Android 65K问题之Multidex原理分析及NoClassDefFoundError的解决方法
- bfs
- 6_Linux系统中的进程创建分析
- 第五周项目三-时间类(1)
- 【VIP】【图】332. Reconstruct Itinerary【M】【47】
- 良好使用UIView,使自定义的视图低耦合、高内聚
- hdoj 2407 Knots
- Spring-理解AOP
- 图示经典算法--快速排序
- 一次意外的ioctl调用错误—论不同版本内核的ioctl函数实现