📅  最后修改于: 2023-12-03 15:11:18.055000             🧑  作者: Mango
这个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]]
这表明程序输出的结果是正确的。