如何查找M行N列矩阵各列最大值的行索引并输出?
获取矩阵每列最大值对应的行索引
现有一个M行N列的矩阵,需要查找每一列中最大值对应的行索引(行号,从1开始计数)。
示例:
输入2×2矩阵:
1 5 2 4
当前仅能输出各列最大值:2 5,期望输出对应行索引:2 1。
原实现输出列最大值的C#函数代码如下:
// 查找并输出每列最大值的函数 public static void MaxColumn(int cols, int rows, int[,] matrix) { for (int i = 0; i < cols; i++) { int max = matrix[0, i]; for (int j = 1; j < rows; j++) { if (matrix[j, i] > max) max = matrix[j, i]; } Console.Write(max + " "); } }
修改后的实现(输出行索引)
只需在原代码基础上增加对行索引的跟踪,最终输出1基的行号即可:
// 查找并输出每列最大值对应行索引的函数 public static void MaxColumnRowIndex(int cols, int rows, int[,] matrix) { for (int i = 0; i < cols; i++) { int max = matrix[0, i]; int maxRowIndex = 0; // 初始记录第一行的数组索引(0基) for (int j = 1; j < rows; j++) { if (matrix[j, i] > max) { max = matrix[j, i]; maxRowIndex = j; // 更新最大值所在的行数组索引 } } // 转换为1基行号后输出 Console.Write((maxRowIndex + 1) + " "); } }
关键修改点
- 新增
maxRowIndex变量,用于跟踪当前列最大值所在的行(数组0基索引) - 每次发现更大值时,同步更新最大值和对应的行索引
- 输出时将0基索引加1,转换为符合示例要求的1基行号
内容的提问来源于stack exchange,提问作者KSHN
相关产品推荐
相关产品推荐

