Algorithm 求解迷宫的最快算法
假设你有一个迷宫。例如:Algorithm 求解迷宫的最快算法,algorithm,sorting,dijkstra,depth-first-search,maze,Algorithm,Sorting,Dijkstra,Depth First Search,Maze,假设你有一个迷宫。例如: # ######## # # # # #### # # # # # # # # # #### # # # # # ### ## # # # # ####### # 您可以用您喜欢的任何数据结构来表示迷宫,例如图形、数组等。 解决任意大小迷宫的最快/最有效算法是什么 首先想到的算法是Dijkstra算法、BFS和DFS。不过,我不确定这些(或任何其他算法)哪一个是“最好的” 因为所有相邻顶点彼此之间的距离为1,所以DF
# ########
# # #
# #### # #
# # # #
# # # ####
# # # #
# ### ## #
# # #
####### #
您可以用您喜欢的任何数据结构来表示迷宫,例如图形、数组等。
解决任意大小迷宫的最快/最有效算法是什么
首先想到的算法是Dijkstra算法、BFS和DFS。不过,我不确定这些(或任何其他算法)哪一个是“最好的” 因为所有相邻顶点彼此之间的距离为1,所以DFS最好
nxm是数组矩阵的大小
public static int min(int x , int y ,int endx,int endy,int n ,int m,int[][] dp){
int[] dirx ={1,-1,0,0 };
int[] diry={0,0,1,-1};
LinkedList<Point> s = new LinkedList<Point>();
s.add(new Point(x,y));
dp[x][y]=0; // For starting point
while(!s.isEmpty()){
Point xx = s.pop();
for(int i=0;i<4;i++){
int x1 = xx.x + dirx[i];
int y1 = xx.y + diry[i];
if(x1>=0 && x1<n && y1>=0 && y1<m && dp[x1][y1]!=-1){
som.add(new Point(x1,y1));
dp[x1][y1] = dp[xx.x][xx.y]+1;
}
}
}
return dp[endx][endy];
}
public static int min(int x,int y,int endx,int endy,int n,int m,int[]dp){
int[]dirx={1,-1,0,0};
int[]diry={0,0,1,-1};
LinkedList s=新建LinkedList();
s、 添加(新点(x,y));
dp[x][y]=0;//用于起点
而(!s.isEmpty()){
第xx点=s.pop();
对于(int i=0;i=0&&x1=0&&y1对于上述迷宫问题,最广泛使用的算法是A*算法,该算法访问相邻节点是一种最佳方式,因此防止访问所有图形。您可以使用曼哈顿距离作为问题的启发式方法,并非常有效地解决此问题
看一看。