dfs 连通性检测

public class LianTongXing {
    
    
    public static void main(String[] args) {
    
    
        //0代表无元素,1代表有元素
        int[][] map = {
    
    
                       {
    
    1, 1, 1, 0},
                       {
    
    0, 0, 0, 1},
                       {
    
    0, 0, 0, 1}
                      };

        int ans = 0;//记录连通块的数目
        for (int i = 0; i < 3; i++) {
    
    
            for (int j = 0; j < 4; j++) {
    
    
                if (map[i][j] == 1) {
    
    
                    dfs(map, i, j);
                    ans++;
                }
            }
        }
        System.out.println(ans);
    }

    public static void dfs(int[][] map, int i, int j) {
    
    
        map[i][j] = 0;
        int m = map.length, n = map[0].length;//m行n列
        if (i - 1 >= 0 && map[i - 1][j] == 1) {
    
    
            dfs(map, i - 1, j);
        }
        if (i + 1 < m && map[i + 1][j] == 1) {
    
    
            dfs(map, i + 1, j);
        }
        if (j - 1 >= 0 && map[i][j - 1] == 1) {
    
    
            dfs(map, i, j - 1);
        }
        if (j + 1 < n && map[i][j + 1] == 1) {
    
    
            dfs(map, i, j + 1);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_46497503/article/details/113773558