利用C++编写一个程序,找出一个五行五列的二维数组的鞍点,即该位置上的元素在该行元素中最大,在该列元素中最小。二维数组可能没有鞍点。函数find判断数组a是否具有鞍点,如果有输出该鞍点坐标以及鞍点上元素的值,如果没有,输出no。数组
时间: 2024-02-22 12:56:46 浏览: 19
以下是一个实现该功能的 C++ 程序:
```cpp
#include <iostream>
using namespace std;
const int N = 5; // 数组的行列数
// 判断二维数组 a 是否具有鞍点,有则返回鞍点的值,否则返回 0
int find(int a[][N]) {
for (int i = 0; i < N; i++) {
// 找到第 i 行的最大值
int max_val = a[i][0], max_j = 0;
for (int j = 1; j < N; j++) {
if (a[i][j] > max_val) {
max_val = a[i][j];
max_j = j;
}
}
// 判断最大值是否也是第 max_j 列的最小值
bool is_saddle_point = true;
for (int k = 0; k < N; k++) {
if (a[k][max_j] < max_val) {
is_saddle_point = false;
break;
}
}
if (is_saddle_point) {
cout << "鞍点坐标为 (" << i << ", " << max_j << "),值为 " << max_val << endl;
return max_val;
}
}
cout << "no" << endl;
return 0;
}
int main() {
int a[N][N] = {{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}};
find(a);
return 0;
}
```
程序中,`find` 函数用于判断二维数组 `a` 是否具有鞍点。它遍历每一行,在每一行中找到最大值及其所在列,然后判断该最大值是否也是所在列的最小值,如果是,则找到了鞍点,输出其坐标及值。如果遍历完所有行,仍未找到鞍点,则输出 `no`。
在 `main` 函数中,我们定义了一个 5x5 的数组 `a`,并调用 `find` 函数来查找其鞍点。在这个例子中,数组 `a` 的鞍点是 15,位于第三行第三列。