📌  相关文章
📜  用于计算二进制矩阵中 1 和 0 集合的Java程序(1)

📅  最后修改于: 2023-12-03 15:11:18.055000             🧑  作者: Mango

用于计算二进制矩阵中 1 和 0 集合的Java程序

这个Java程序实现了计算二进制矩阵中 1 和 0 集合的功能。它接受一个二维数组作为输入,该二维数组由 0 和 1 组成。程序会输出两个数组,一个包含所有值为 1 的位置,另一个包含所有值为 0 的位置。

输入参数

这个Java程序仅接受一个输入参数,即一个二维数组。该数组由 0 和 1 组成,表示一个二进制矩阵。例如,以下是一个二维数组的例子:

int[][] binaryMatrix = {
    {0, 1, 0},
    {0, 0, 1},
    {1, 1, 1}
};
输出结果

该Java程序会输出两个数组,分别表示所有值为 1 和 0 的位置。两个数组的格式类似,都是一个包含一些点的二维数组。以下是一个输出的例子:

int[][] ones = {{0, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}};
int[][] zeroes = {{0, 0}, {1, 0}, {1, 1}};
实现细节

这个Java程序的实现方式很简单,它会遍历输入的二维数组,然后将所有值为 1 或 0 的位置添加到对应的数组中。以下是程序的代码:

public class BinaryMatrix {
    public static int[][] getOnes(int[][] matrix) {
        ArrayList<int[]> onesList = new ArrayList<>();
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (matrix[i][j] == 1) {
                    onesList.add(new int[] {i, j});
                }
            }
        }
        int[][] ones = new int[onesList.size()][2];
        for (int i = 0; i < onesList.size(); i++) {
            ones[i][0] = onesList.get(i)[0];
            ones[i][1] = onesList.get(i)[1];
        }
        return ones;
    }

    public static int[][] getZeroes(int[][] matrix) {
        ArrayList<int[]> zeroesList = new ArrayList<>();
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (matrix[i][j] == 0) {
                    zeroesList.add(new int[] {i, j});
                }
            }
        }
        int[][] zeroes = new int[zeroesList.size()][2];
        for (int i = 0; i < zeroesList.size(); i++) {
            zeroes[i][0] = zeroesList.get(i)[0];
            zeroes[i][1] = zeroesList.get(i)[1];
        }
        return zeroes;
    }
}
实验测试

我们可以使用以下代码来测试程序的功能:

int[][] binaryMatrix = {
    {0, 1, 0},
    {0, 0, 1},
    {1, 1, 1}
};
int[][] ones = BinaryMatrix.getOnes(binaryMatrix);
int[][] zeroes = BinaryMatrix.getZeroes(binaryMatrix);
System.out.println(Arrays.deepToString(ones));
System.out.println(Arrays.deepToString(zeroes));

程序的输出结果为:

[[0, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
[[0, 0], [1, 0], [1, 1]]

这表明程序输出的结果是正确的。