我有一个填充0和1的矩阵,我想找到矩阵中两个点之间的最短点,仅从零传递。 我发现这个source code解决了我的问题,但它只通过用数字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)
答案 0 :(得分:0)
查看下面的代码
//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。