![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
BFS总结
总结bfs题型
哆啦c梦~~
嵌入式开发小白
展开
-
AcWing 179. 八数码
原题链接: https://www.acwing.com/problem/content/181/题目描述在一个3×3的网格中,1~8这8个数字和一个“X”恰好不重不漏地分布在这3×3的网格中。例如:1 2 3X 4 67 5 8在游戏过程中,可以把“X”与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 X例如,示例中图形就可以通过让“X”先后与右、下、右三个方向的数字交换成功得到正确排列。原创 2020-10-07 16:17:36 · 124 阅读 · 0 评论 -
AcWing 177. 噩梦(双向BFS)
原题链接: https://www.acwing.com/problem/content/179/题目描述给定一张N*M的地图,地图中有1个男孩,1个女孩和2个鬼。字符“.”表示道路,字符“X”表示墙,字符“M”表示男孩的位置,字符“G”表示女孩的位置,字符“Z”表示鬼的位置。男孩每秒可以移动3个单位距离,女孩每秒可以移动1个单位距离,男孩和女孩只能朝上下左右四个方向移动。每个鬼占据的区域每秒可以向四周扩张2个单位距离,并且无视墙的阻挡,也就是在第k秒后所有与鬼的曼哈顿距离不超过2k的位置都会被原创 2020-10-07 14:51:16 · 213 阅读 · 0 评论 -
AcWing 176. 装满的油箱(dijkstra算法)
原题链接:https://www.acwing.com/problem/content/178/题目描述有N个城市(编号0、1…N-1)和M条道路,构成一张无向图。在每个城市里边都有一个加油站,不同的加油站的单位油价不一样。现在你需要回答不超过100个问题,在每个问题中,请计算出一架油箱容量为C的车子,从起点城市S开到终点城市E至少要花多少油钱?注意: 假定车子初始时油箱是空的。输入格式第一行包含两个整数N和M。第二行包含N个整数,代表N个城市的单位油价,第i个数即为第i个城市的油价pi。原创 2020-10-07 13:18:10 · 308 阅读 · 0 评论 -
AcWing 175. 电路维修(dijkstra算法变形)
原题链接: https://www.acwing.com/problem/content/177/题目描述达达是来自异世界的魔女,她在漫无目的地四处漂流的时候,遇到了善良的少女翰翰,从而被收留在地球上。翰翰的家里有一辆飞行车。有一天飞行车的电路板突然出现了故障,导致无法启动。电路板的整体结构是一个R行C列的网格(R,C≤500),如下图所示。每个格点都是电线的接点,每个格子都包含一个电子元件。电子元件的主要部分是一个可旋转的、连接一条对角线上的两个接点的短电缆。在旋转之后,它就可以连接另一原创 2020-10-07 11:23:27 · 154 阅读 · 0 评论 -
AcWing 174. 推箱子(超级麻烦,bfs套bfs)一起来膜拜大佬
题目描述推箱子游戏相信大家都不陌生,在本题中,你将控制一个人把1个箱子到目的地。给定一张N行M列的地图,用字符”.”表示空地,字符”#”表示墙,字符”S”表示人的起始位置,字符”B”表示箱子的起始位置,字符”T”表示箱子的目标位置。求一种移动方案,使箱子移动的次数最少,在此基础上再让人移动的总步数最少。方案中使用大写的“EWSN”(东西南北)表示箱子的移动,使用小写的“ewsn”(东西南北)表示人的移动。输入格式输入包含多个测试用例。对于每个测试用例,第一行包括两个整数N,M。接下来N行转载 2020-10-07 10:31:27 · 395 阅读 · 0 评论 -
AcWing 173. 矩阵距离(多源BFS)
原题链接: https://www.acwing.com/problem/content/description/175/题目描述给定一个N行M列的01矩阵A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为:dist(A[i][j],A[k][l])=|i−k|+|j−l|输出一个N行M列的整数矩阵B,其中:B[i][j]=min1≤x≤N,1≤y≤M,A[x][y]=1dist(A[i][j],A[x][y])输入格式第一行两个整数n,m。接下来一个N行M列的01矩阵,数字之原创 2020-10-07 10:10:22 · 217 阅读 · 0 评论 -
AcWing 172. 立体推箱子(三维状态)
原题链接: https://www.acwing.com/problem/content/174/题目描述立体推箱子是一个风靡世界的小游戏。游戏地图是一个N行M列的矩阵,每个位置可能是硬地(用”.”表示)、易碎地面(用”E”表示)、禁地(用”#”表示)、起点(用”X”表示)或终点(用”O”表示)。你的任务是操作一个1×1×2的长方体。这个长方体在地面上有两种放置形式,“立”在地面上(1×1的面接触地面)或者“躺”在地面上(1×2的面接触地面)。在每一步操作中,可以按上下左右四个键之一。按下按原创 2020-10-06 21:05:27 · 315 阅读 · 1 评论 -
BFS知识点总结
文章目录BFS执行过程BFS思考过程1.状态表示2.状态转移3.状态存储BFS常用模板(C++版)BFS常见题型总结BFS执行过程BFS思考过程1.状态表示判断题目中有几个变量在不断变化,这些不断变化的变量就是我们要找的状态。2.状态转移通常开一个多维数组(根据状态个数来表示,有几个状态就开几维), 根据题目的要求先将这些状态偏移量保存在状态数组中,方便转移3.状态存储将这些转移后的状态存储在队列中,方便下一次转移。BFS常用模板(C++版)queue<int>原创 2020-10-06 20:29:59 · 159 阅读 · 0 评论