Dfs_FloodFill del gráfico
- Introduzca una matriz de caracteres con m filas yn columnas y cuente el número de ocho bloques formados por el carácter "@".
- Si la cuadrícula de dos caracteres "@" es adyacente (horizontal, vertical o diagonalmente), se dice que pertenecen al mismo bloque de ocho conexiones.
- Análisis: dfs del gráfico
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);
}
}