【发布时间】:2021-08-08 12:54:43
【问题描述】:
我有一个表示地图的网格。我有海洋节点,我有陆地节点。我想使用递归函数为每个人分配一个距离。 (所以我猜是一个函数调用/孤岛)。
我目前有一个代码,是这样的:
public int searchOcean(int x, int y, boolean[] visited) {
if (x < 0 || x >= width || y < 0 || y >= height) {
return 1000;
}
Node current = this.get(x, y);
int index = current.getIndex(this);
if (visited[index]) {
return current.oceanDist;
}
visited[index] = true;
if (current.ocean) {
current.oceanDist=0;
return 0;
}
int r1 = searchOcean(x + 1, y, visited);
int r2 = searchOcean(x - 1, y, visited);
int r3 = searchOcean(x, y + 1, visited);
int r4 = searchOcean(x, y - 1, visited);
int min = Math.min(Math.min(r1, r2), Math.min(r3 , r4))+1;
current.oceanDist = min;
return min;
}
问题是,它并没有真正起作用,我想主要是因为我不知道如何处理已经访问过的节点。
【问题讨论】:
标签: java recursion distance graph-theory flood-fill