
搜索
bfs和dfs
Alphacoo
这个作者很懒,什么都没留下…
展开
-
AcWing 188. 武士风度的牛(BFS,C++)
AcWing 188. 武士风度的牛题意从一个起点遵循某种特殊规则走到终点,求最短的步数分析很显然,这题是bfs思想的应用。1.首先输入数据,并在每次输入数据时判断起点和终点的坐标。2.初始化队列,从起点开始按照规则进行遍历。规则是按照中国象棋马的走法,马在上下左右这四个基本方向上可以再往两个斜边走3.每次遍历坐标都要检查坐标是否合法,是否是障碍,是否之前被遍历过(因为这题是从中心向四周扩散,如果当前坐标已被标记了,那么就说明路径往回走了,就说明走重复了,也就说明不是最短路)4.对坐标进行应原创 2021-06-10 15:55:37 · 492 阅读 · 0 评论 -
poj1321.棋盘问题
传送门题意在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。分析这题和N皇后有点相似,但还是有不同点:1.N皇后还要求对角线和辅对角线都不能放,需要使用额外数组去判断对角线和辅对角线有没有放过棋子2.N皇后初始化时每个位置只有一种状态,而这题初始化时每个位置有'#'和'.',只有'#'才可以放搜索的结束条件为:1.已经放好的棋子数量等于k,原创 2020-11-19 14:05:09 · 440 阅读 · 0 评论 -
AcWing 1112. 迷宫
题目链接题意给一个n*n的二维矩阵,矩阵中只有’.‘和’#‘这两种状态,’.‘表示可以走,’#‘是障碍,给出起点和终点,只能上下左右走(四连通),还需要注意两点:1.起点有可能就是终点 2.起点和终点都有可能是’#’分析题目是经典的dfs题,就判断是否到了终点没,没到终点就一直尝试往四个方向搜解决方案1.初始化数据,输入矩阵大小、初始化状态数组、输入起点终点坐标2.先判断起点和终点是不是’#’,然后再判断是否为同一坐标3.执行dfs,一直搜,如果有就标记答案变量,没有就不做标记踩坑原创 2020-09-15 20:26:16 · 221 阅读 · 0 评论