给定一个矩阵,寻找这个矩阵的鞍点。 鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。第一行输入m,n两个正整数,表示矩阵的行数和列数。 此后输入m行,每行n个正整数。如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"无鞍点"。c++
时间: 2023-06-24 18:04:03 浏览: 127
以下是一个 C++ 实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int matrix[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}
bool saddle_point_found = false;
for (int i = 0; i < m; i++) {
int row_max = matrix[i][0];
int col_index = 0;
for (int j = 1; j < n; j++) {
if (matrix[i][j] > row_max) {
row_max = matrix[i][j];
col_index = j;
}
}
bool is_saddle_point = true;
for (int k = 0; k < m; k++) {
if (matrix[k][col_index] < row_max) {
is_saddle_point = false;
break;
}
}
if (is_saddle_point) {
cout << "Saddle point found at (" << i << ", " << col_index << "): " << row_max << endl;
saddle_point_found = true;
break;
}
}
if (!saddle_point_found) {
cout << "No saddle point found." << endl;
}
return 0;
}
```
该程序首先读取矩阵的行数和列数,然后读取矩阵的每个元素。接下来,程序在每一行中找到最大值,并记录该最大值所在的列。然后程序检查该列中的所有元素是否都小于或等于该行的最大值,如果是,则该元素为鞍点。如果程序在任何行中找到了鞍点,则输出该点的位置和值。如果程序在所有行中都没有找到鞍点,则输出 "无鞍点"。
阅读全文