【发布时间】:2019-07-08 07:15:27
【问题描述】:
“找到矩阵中的最大元素并从矩阵中删除包含它的所有行和列”。
我制定了方法。在一个中,我找到了矩阵中的最大数。在第二个中,我从矩阵中删除包含最大数字的行和列。但只有最大的数字是唯一的,它才能正常工作。怎么弄,删除了最大数包含的所有行和所有列?
private void deleteRowCol() {
int[][] matrix = getMatrix();
int max = matrix[0][0];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (max < matrix[i][j]) {
max = matrix[i][j];
}
}
}
int[] m = findIdMax(matrix, max);
int[][] outMatrix = new int[matrix.length - 1][matrix[0].length - 1];
int r = 0;
for (int i = 0; i < outMatrix.length; i++) {
if (i > m[0] - 1) {
r = 1;
}
int c = 0;
for (int j = 0; j < outMatrix[0].length; j++) {
if (j > m[1] - 1) {
c = 1;
}
outMatrix[i][j] = matrix[i + r][j + c];
}
}
System.out.println(" ");
outputMatrix(outMatrix);
}
private int[] findIdMax(int[][] matrix, int max) {
int[] id = {0, 0};
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (max == matrix[i][j]) {
id[0] = i;
id[1] = j;
}
}
}
return id;
}
预期输出: 用这个矩阵
4 2 0 -3
4 -1 4 1
0 2 -4 3
-4 -1 -4 -2
应该带
-2 3
-1 -2
【问题讨论】:
-
您只想打印结果,还是实际上有一个删除行/列的
int[][]矩阵? -
您的代码可以找到并删除 一个 出现的
max如果您想删除 多个 出现的max,您'将不得不重复该逻辑多次次:换句话说,您需要一个循环。
标签: java arrays matrix multidimensional-array