找出矩阵中的最短路径
本文关键字:最短路径 | 更新日期: 2023-09-27 18:14:35
我有一个由0和1填充的矩阵,我想找到矩阵中两个点之间的最短点。我发现这个源代码解决了我的问题,但它只显示在矩阵的结果通过填充与数字100的路径,我想得到一个数组的结果。下面是一个矩阵的例子:
0 0 0 1 0
0 1 1 1 1
0 0 0 0 1
1 1 1 0 0
起始点为(0,0),目标点为(4,3)程序以这种格式显示结果:
100 0 0 1 0
100 1 1 1 1
100 100 100 100 1
1 1 1 100 100
但是我想以这种格式得到结果:
(0,0), (0,2), (3,2), (3,3), (4,3)
看下面的代码
//create an array(maze) for solution
294 int[,] iMazeSolved=new int[iRows,iCols];
295 for(int i=0;i<iRows;i++)
296 for(int j=0;j<iCols;j++)
297 iMazeSolved[i,j]=m_iMaze[i,j];
298
299 //make a path in the Solved Maze
300 iCurrent=iStop;
301 ChangeNodeContents(iMazeSolved, iCurrent, iPath);
302 for(int i=iFront; i>=0; i--)
303 {
304 if (Queue[i]==iCurrent)
305 {
306 iCurrent=Origin[i];
307 if (iCurrent==-1) // maze is solved
308 return ( iMazeSolved );
309 ChangeNodeContents(iMazeSolved, iCurrent, iPath);
310 }
311 }
iMazeSolved是包含解决方案的数组。ChangeNodeContents是路径被替换为1000之后的解决方案。你只需要数组iMazeSolved