美文网首页
java-给定一个表格,求里面有多少个块 - 草稿

java-给定一个表格,求里面有多少个块 - 草稿

作者: redpeanuts | 来源:发表于2019-08-01 21:39 被阅读0次
image.png

上下左右相连的为一个块,如上图,共有三个块
现给定一个n*n的表格求出所有的块数,采用湮灭法,每到一个块,就把所有的子元素清零

public class FindBlocks {
    public static int find(int[][] a) {
        int result = 0;
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                if (a[i][j] != 0) {
                    dispear(a, i, j);
                    result++;
                }
            }
        }
        return result;
    }

    public static void dispear(int[][] a, int i, int j) {
        if (a[i][j] == 0) return;
        a[i][j] = 0;
        //up
        if (j - 1 >= 0&& a[i][j - 1] != 0 ) {
            dispear(a, i, j - 1);
        }

        //down
        if (j + 1 < a.length&&a[i][j + 1] != 0  ) {
            dispear(a, i, j + 1);
        }

        //left

        if (i - 1 >=0&&a[i - 1][j] != 0  ) {
            dispear(a, i - 1, j);
        }

        //right
        if (i + 1 < a.length&&a[i + 1][j] != 0  ) {
            dispear(a, i + 1, j);
        }
    }

    public static void main(String[] args){
    int[][] a={{1,1,1,0,0,0,1},{1,0,0,0,0,0,0},{1,1,0,0,0,0,0},
            {0,0,0,0,1,1,0},{0,0,1,0,0,0,1},{0,0,0,0,0,0,0}};
    int r = find(a);
    System.out.println(r);
   }
}

相关文章

  • java-给定一个表格,求里面有多少个块 - 草稿

    上下左右相连的为一个块,如上图,共有三个块现给定一个n*n的表格求出所有的块数,采用湮灭法,每到一个块,就把所有的...

  • 动态规划之回文数组

    动态规划之回文数组 /*给定一个长度为n(n <= 1000)的字符串A,求插入最少多少个字符使得它变成一个回文串...

  • 最多有多少个点在同一条直线上

    给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。https://leetcode-cn.co...

  • Day74 直线上最多的点数

    给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。 https://leetcode-cn.c...

  • leetcode第413题:等差数列划分 [中等]

    题目描述 给定一个数组,求这个数组中连续且等差的子数组一共有多少个? 例子: 考点 数学 动态规划 解题思路 状态...

  • 直线上最多的点数

    问题描述: 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。 示例 1: 输入: 输出: 解...

  • 20里面有多少个5

    帮助孩子积累学习经验、强化方法: 1、准备20个大豆(玉米……),让孩子抓取,每次取5个,体验一下,□次抓完的。 ...

  • PPT-Lecture07-表格

    1、如何插入表格? “插入”->"表格"->给定行列即可。 2、插入表格之后,如何修改表格的样式? 选中表格,->...

  • 149. 直线上最多的点数

    给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。 示例 1: 输入: [[1,1],[2,2...

  • 有序数据去重并计算平方值相同 的个数

    给定一个有序数组,数组中有正数、负数或者0,对数组中所有的数求平方后问有多少个不同的值。比如对于数组[-1,0,1...

网友评论

      本文标题:java-给定一个表格,求里面有多少个块 - 草稿

      本文链接:https://www.haomeiwen.com/subject/hyjzxctx.html