Я пытаюсь вернуть индекс столбца, который содержит минимальное значение в матрице, но пока я могу только вернуть минимальное значение матрицы и не могу понять, как вернуть этот идентификатор столбца. Если я попытаюсь вернуть "col", это ничего не изменит.
public static int minColIndex (int[][] m) {
int row = m.length, col = m[0].length;
int min = m[0][0];
for (col = 0; col < m.length; col++) {
for (row = 0; row < m[col].length; row++) {
if (min > m[col][row]) {
min = m[col][row];
}
}
}
return min;
}
В вашем коде значение col
всегда будет m.length - 1
после завершения внешнего цикла. Вам нужно сохранить минимальный столбец где-нибудь, например,
public static int minColIndex (int[][] m) {
int row = m.length, col = m[0].length;
int min = m[0][0];
int minCol = 0; // extra variable to store minimumm column
for (col = 0; col < m.length; col++) {
for (row = 0; row < m[col].length; row++) {
if (min > m[col][row]) {
min = m[col][row];
minCol = col; // remember the minimum column as well as minimum
}
}
}
return minCol; // return minimum column, not col
}
Там также нет необходимости в row
и col
, чтобы иметь начальные значения, установленные перед циклом, так что вы можете изменить первые несколько строк методы будут следующими, чуть большей ясность:
public static int minColIndex (int[][] m) {
int min = m[0][0];
int minCol = 0; // extra variable to store minimumm column
for (int col = 0; col < m.length; col++) {
for (int row = 0; row < m[col].length; row++) {
... etc.
public static int minColIndex (int[][] m) {
int row = m.length, col = m[0].length , int index = 0;
int min = m[0][0];
for (col = 0; col < m.length; col++) {
for (row = 0; row < m[col].length; row++) {
if (min > m[col][row]) {
min = m[col][row];
index= col;
}
}
}
return index;
}
Если (min <m [c] [r]) {
мин = [с] [г];
сохранить = с;
} '
Определите эти переменные.
int rowOfMinValue = 0;
int colOfMinValue = 0;
А потом,
Изменить:
if (min > m[col][row]) {
min = m[col][row];
}
Для того, чтобы:
if (min > m[col][row]) {
min = m[col][row];
rowOfMinValue = row;
colOfMinValue = col;
}
теперь у вас есть минимальные значения строк и столбцов в руке.
Предложение: Вы неправильно указали row
и col
в матрице. На матрице mxn
m
и n
представляют собой строки и столбцы соответственно. И, следовательно, в матрице m[][]
каждая из []
представляет последовательность row
и col
соответственно в последовательности.
Если значение 6
находится во 2nd row
, 4th col
, то мы пишем как
row=1;
col=3;
value = 6;
m[ row ][ col ] = value;