dfs算法题java
时间: 2023-06-21 17:15:32 浏览: 136
好的,这里提供一个深度优先搜索(DFS)算法题的Java代码示例,希望能帮助你:
题目描述:给定一个二维数组,其中1表示陆地,0表示海洋。计算该二维数组中连通的陆地区域个数。
思路:遍历二维数组,当遇到1时,从当前位置开始进行DFS遍历,将所有与当前位置相连的陆地标记为已访问,直到当前连通区域遍历完毕。遍历完毕后,将连通区域个数加1。
Java代码实现:
```
public class Solution {
public int numIslands(char[][] grid) {
if (grid == null || grid.length == 0) {
return 0;
}
int m = grid.length;
int n = grid[0].length;
int count = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] == '1') {
count++;
dfs(grid, i, j);
}
}
}
return count;
}
private void dfs(char[][] grid, int i, int j) {
if (i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] == '0') {
return;
}
grid[i][j] = '0';
dfs(grid, i + 1, j);
dfs(grid, i - 1, j);
dfs(grid, i, j + 1);
dfs(grid, i, j - 1);
}
}
```
以上就是一个深度优先搜索算法题的Java代码实现,希望能够帮到你!
阅读全文