我有有Dijkstra或A *上的10x10網格帶有隨機障礙物,起始點0,0,0,9,9端?
1 0 1 1 1 1 1 1 1 1
1 1 0 0 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 0
1 0 1 1 1 0 1 0 1 1
1 1 0 1 0 1 0 0 1 1
1 1 0 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 0 1 1 1
1代表開放 0代表密切
的0的可能是隨機的,並獲得用戶選擇開始點和結束點二維數組。
我明白如何通過2個嵌套for循環獲取所有開放單元格,並將它們存儲到點的Arraylist中。
現在我需要找到最短路徑,但A *或Djakstra混淆了
比方說我的出發點是0,0和我的終點是9,9,我怎麼得到最短的路徑?
我想出這個至今拿開電池:
//Check empty cells in the grid and color them in YELLOW
for (int i = 0; i < MyMatrix.length; i++) {
for (int j = 0; j < MyMatrix.length; j++) {
if (MyMatrix[j][i]) {
StdDraw.setPenColor(StdDraw.YELLOW);
StdDraw.filledSquare(i, N - j - 1, .1);
}
}
}
//add all empty coordinates to array list of points
for (int i = 0; i < MyMatrix.length; i++) {
for (int j = 0; j < MyMatrix.length; j++) {
if (MyMatrix[i][j]) {
coordinates.add(new Point(i, j));
}
}
}
但後來我如何檢查的最短路徑?
Dijkstra算法在這裏工作。 – vish4071
[廣度優先搜索](https://en.wikipedia.org/wiki/Breadth-first_search)適合您的情況。 – Gassa