在矩阵中查找最短路径

时间:2015-09-26 18:45:52

标签: c# matrix shortest-path

我有一个填充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)

1 个答案:

答案 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。