不用pair将其改成广度优先搜索bool dfs(int to_x, int to_y, int box_x, int box_y, int people_x, int people_y) { visit2[people_x][people_y] = 1; if (to_x == people_x && to_y == people_y) { flag1 = true; return true; } if (!flag1) { for (int i = 0; i < 4; i++) { int xx = people_x + dx[i]; int yy = people_y + dy[i]; if (xx<1 || yy<1 || xx>n || yy>m || (xx == box_x && yy == box_y) || board[xx][yy] == 1 || visit2[xx][yy]) continue; dfs(to_x, to_y, box_x, box_y, xx, yy); if (flag1) return true; } } return false;}
时间: 2024-04-08 14:32:43 浏览: 67
CSharp_Int_TextBox.rar_C#int_c# console输入int_c# textbox 判断_c# te
这段代码使用深度优先搜索(DFS)来判断从当前人的位置出发是否能够到达目标位置。代码中使用了一个visit2数组来记录已经访问过的位置,避免重复访问。在每一次递归调用dfs函数时,先判断是否已经到达目标位置,如果是则将flag1置为true并返回true;否则,遍历当前位置的四个相邻位置,如果该相邻位置满足条件(不超出边界、不是箱子的位置、不是障碍物、未被访问过),则继续递归调用dfs函数。如果在递归调用中flag1变为true,则说明找到了一条路径,返回true。如果所有的相邻位置都无法找到路径,则返回false。
需要注意的是,这段代码只是一个函数定义,并没有完整的调用和使用的代码,所以无法判断整体的功能和正确性。如果有具体的需求和问题,可以提供更多的信息,我会尽力帮助解答。
阅读全文