C++ 寻找 5x5 矩阵的鞍点 - 算法详解与代码实现
{"title":"描述", "content":"给定一个 5×5 的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。例如:在下面的例子中(第 4 行第 1 列的元素就是鞍点,值为 8)。\n11 3 5 6 9\n12 4 7 8 10\n10 5 6 9 11\n8 6 4 7 2\n15 10 11 20 25\n\n输入描述\n\n输入包含一个 5 行 5 列的矩阵。\n\n输出描述\n\n如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出 not found。\n\n样例输入 1 \n\n11 3 5 6 9\n12 4 7 8 10\n10 5 6 9 11\n8 6 4 7 2\n15 10 11 20 25\n样例输出 1 \n\n4 1 8\n\n\nc++内容:cpp\n#include <iostream>\nusing namespace std;\n\nint main() {\n int matrix[5][5];\n\n // 输入矩阵\n for (int i = 0; i < 5; i++) {\n for (int j = 0; j < 5; j++) {\n cin >> matrix[i][j];\n }\n }\n\n // 寻找鞍点\n bool found = false;\n int row, col, value;\n for (int i = 0; i < 5; i++) {\n int maxVal = matrix[i][0];\n int colIndex = 0;\n for (int j = 1; j < 5; j++) {\n if (matrix[i][j] > maxVal) {\n maxVal = matrix[i][j];\n colIndex = j;\n }\n }\n\n int minVal = matrix[0][colIndex];\n int rowIndex = 0;\n for (int j = 1; j < 5; j++) {\n if (matrix[j][colIndex] < minVal) {\n minVal = matrix[j][colIndex];\n rowIndex = j;\n }\n }\n\n if (rowIndex == i) {\n found = true;\n row = rowIndex + 1;\n col = colIndex + 1;\n value = matrix[rowIndex][colIndex];\n break;\n }\n }\n\n // 输出结果\n if (found) {\n cout << row << " " << col << " " << value << endl;\n } else {\n cout << "not found" << endl;\n }\n\n return 0;\n}
原文地址: https://www.cveoy.top/t/topic/pLkM 著作权归作者所有。请勿转载和采集!