DFS_4:连通块数量
问题分析:
为什么DFS能求连通块的数量?这篇文章应该发表在01迷宫文章之前才对,因为01迷宫如果用DFS的话,那求的就是每个连通块里面的小块有多少个,其实说白了,01迷宫 就是利用了DFS+VIS染色记录的原理。目前这题求连通块的数量比较简单,因为他不用记录每个连通块里面的小块有多少个,只需要DFS就能完成。此外,回答一开头的问题,其实是因为DFS能一条路走到黑,也就是能遍历完所有点,所以才能求得连通块的数量。此外BFS也能求连通块的数量。
输入输出:
5 5
0 0 1 1 1
0 1 0 0 0
1 0 0 1 1
1 1 1 1 1
0 0 0 0 0
3
代码
易错:先标记再递归
import java.util.Scanner;
public class DFS_3 {
static int N = 20;
static int n,m ;
static int[][] map = new int[N][N];
static int[] xx = {0,0,-1,1};
static int[] yy = {-1,1,0,0};
static int ans = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt