输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。 输出 查找二维数组的鞍点,并输出。 鞍点:就是在一个二维数组中,某一个数在该行中最大,然而其在该列中又是最小的数,这样的数称为鞍点。 输出鞍点格式如下: Array[i][j]=x 其中x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。 一个二维数组并不一定存在鞍点,此时请输出None 我们保证不会出现两个鞍点的情况,比如:
时间: 2024-02-13 09:01:19 浏览: 110
以下是一个实现上述功能的 C++ 代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
vector<vector<int>> arr(m, vector<int>(n)); // 定义 m × n 的二维数组
// 输入数组元素
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> arr[i][j];
}
}
int saddle_point = -1; // 鞍点的值
int row = -1; // 鞍点所在行
int col = -1; // 鞍点所在列
// 查找鞍点
for (int i = 0; i < m; i++) {
int max_val = arr[i][0]; // 当前行的最大值
int max_j = 0; // 当前行最大值所在列
for (int j = 1; j < n; j++) {
if (arr[i][j] > max_val) {
max_val = arr[i][j];
max_j = j;
}
}
bool is_saddle_point = true;
for (int k = 0; k < m; k++) {
if (arr[k][max_j] < max_val) {
is_saddle_point = false;
break;
}
}
if (is_saddle_point) {
saddle_point = max_val;
row = i;
col = max_j;
break;
}
}
// 输出鞍点
if (saddle_point == -1) {
cout << "None" << endl;
} else {
cout << "Array[" << row << "][" << col << "]=" << saddle_point << endl;
}
return 0;
}
```
该代码通过输入二维数组的行数和列数,并在接下来的输入中读入数组元素。然后,它遍历每一行,在每一行中找到最大值及其所在列。接着,它检查该列中的最小值是否等于该行中的最大值,如果是,则该值为鞍点。如果没有找到鞍点,则输出 "None"。否则,输出鞍点所在的行、列及其值。
阅读全文