我试图返回包含矩阵中最小值的列的索引,但到目前为止我只能返回矩阵的最小值,并且无法弄清楚如何返回该列的id。如果我尝试返回“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;
}
答案 0 :(得分:3)
在您的代码中,外部循环完成后,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
也不需要在循环之前设置初始值,因此您可以将方法的前几行更改为以下内容,以便更加清晰:< / p>
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.
答案 1 :(得分:0)
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;
}
答案 2 :(得分:0)
定义这些变量。
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
指向矩阵。在m x n
矩阵上,m
和n
分别代表行和列。因此,在m[][]
矩阵中,[]
中的每一个分别按顺序表示row
和col
。
如果值6
位于2nd row
,4th col
,那么我们写为
row=1;
col=3;
value = 6;
m[ row ][ col ] = value;
答案 3 :(得分:0)
If(min
保存= C;
}&#39;