我必须找到从一个索引到另一个索引的最短路径。
为了推进索引,索引必须是一个“邻居”,索引中的值与旁边的值相同。我必须创建一个函数,以递归方式计算所有可能的路径,然后将所有路径全部放在矩阵中。
到目前为止,我的想法是使用洪水填充算法并以某种方式计算每条路径。
好吧所以我一直坐在这里试图弄清楚如何做到这一点,到目前为止我提出了这个想法:创建一个重复的数组,在每个索引中将显示我与我的初始节点的距离。我不确定我是否正确这样做所以需要一些帮助,这就是我写的:
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;
}
答案 0 :(得分:0)
您给出的2D矩阵实际上称为邻接矩阵。我想你会发现Dijkstra的算法很有用,或者一旦你找到了目标顶点就会停止广度优先搜索。