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