如何轻松显示从Start到最近出口所需的路径?
int BFS(int mat[][COL], Point start, Point door)
{
//Sprawdza start i wyjscie
if (!mat[start.x][start.y] || !mat[door.x][door.y])
return -1;
bool visited[ROW][COL];
memset(visited, false, sizeof visited);
// Odwiedzone
visited[start.x][start.y] = true;
queue<queueNode> q;
queueNode s = {start, 0};
q.push(s);
//
while (!q.empty())
{
queueNode curr = q.front();
Point pt = curr.pt;
if (pt.x == door.x && pt.y == door.y)
return curr.dist;
q.pop();
for (int i = 0; i < 4; i++)
{
int row = pt.x + rowNum[i];
int col = pt.y + colNum[i];
if (isValidCell(row, col) && mat[row][col] &&
!visited[row][col])
{
visited[row][col] = true;
queueNode Adjcell = { {row, col},
curr.dist + 1
};
q.push(Adjcell);
}
}
}
return -1; //can't be reached
}
我试图创建存储被访问单元格坐标的数组,并在上次if
遇到其条件时显示行和列:
cout<<row<<" "<<col;
发布于 2019-05-29 09:56:39
我不太清楚你想要做什么,但是如果你想在图上的点之间找到最短的路径,你可以用Dijkstra's Algorithm.如果这是您想要的,并且您需要更多的实现信息,您可以在Google上搜索“Dijkstra算法c+”,或者在这里对堆栈溢出进行进一步的查询。
https://stackoverflow.com/questions/-100006843
复制相似问题