0

我必须找到从一个索引到另一个索引的最短路径。

为了推进一个索引,索引必须是一个“邻居”,在索引内的值与它旁边的值相同。我必须创建一个函数,以递归方式计算所有可能的路径,然后将所有路径放入矩阵中。

到目前为止,我的想法是在哪里使用洪水填充算法并以某种方式计算每条路径。

好的,所以我在这里坐了很长时间试图弄清楚如何做到这一点,到目前为止,我想到了这个想法:创建一个重复的数组,在每个索引中都会显示到我的初始节点的距离。我不确定我是否正确执行此操作,因此需要一点帮助,这就是我写的:

public static int[][] createdistancematrix(int[][] map, int i, int j) {
    int[][] temp = new int[map.length][map[0].length];
    map[i][j] = 0;
    int count = 0;
    filldistance(temp, i, j,count);

    return temp;
}

public static int[][] filldistance(int[][] temp, int i, int j,int count) {
    if ((i<temp.length) && (i>=0) && (j<temp.length) && (j>=0)) {

        temp[i][j] = count;
        count++;

        //recursive call for north east west south.

        filldistance(temp, i-1,j, count);
        filldistance(temp, i+1,j, count);
        filldistance(temp, i,j-1, count);
        filldistance(temp, i,j+1, count);
    }
    return temp;
}
4

1 回答 1

0

您给出的二维矩阵实际上称为邻接矩阵。我认为您会发现 Dijkstra 的算法很有用,或者在您找到目标顶点后停止的广度优先搜索。

于 2012-12-21T13:43:19.387 回答