图的dfs_FloodFill
- 输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。
- 如果两个字符“@”所在的格子相邻(横、竖或者对角线方向),就说它们属于同一个八连块。
- 分析:图的dfs
public class 图的dfs_FloodFill {
private static char[][] data = {
"*@@*@".toCharArray(),
"**@*@".toCharArray(),
"****@".toCharArray(),
"@@@*@".toCharArray(),
"@@**@".toCharArray(),
};
private static int cnt;
private static void dfs(int r, int c) {
if (r < 0 || r >= data.length || c < 0 || c >= data[0].length) return;
if (data[r][c] == '*') return;
data[r][c] = '*';
dfs(r + 1, c);
dfs(r - 1, c);
dfs(r, c + 1);
dfs(r, c - 1);
dfs(r + 1, c + 1);
dfs(r + 1, c - 1);
dfs(r - 1, c - 1);
dfs(r - 1, c + 1);
}
public static void main(String[] args) {
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[0].length; j++) {
if (data[i][j] == '@') {
dfs(i, j);
++cnt;
}
}
}
System.out.println(cnt);
}
}