用c++代码写一个可以找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点
时间: 2023-11-06 16:34:32 浏览: 72
好的,以下是用 C++ 代码实现的二维数组鞍点查找:
```c++
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin >> n >> m; // 输入二维数组的行数和列数
int a[n][m]; // 定义二维数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> a[i][j]; // 输入二维数组的每个元素
}
}
bool flag = false; // 用于判断是否存在鞍点
for (int i = 0; i < n; i++) {
int max_in_row = a[i][0]; // 找出该行上的最大元素
int max_index = 0; // 该行上最大元素的列下标
for (int j = 1; j < m; j++) {
if (a[i][j] > max_in_row) {
max_in_row = a[i][j];
max_index = j;
}
}
bool is_saddle = true; // 用于判断该元素是否为鞍点
for (int k = 0; k < n; k++) {
if (a[k][max_index] < max_in_row) { // 判断该列上的元素是否都小于该行上的最大元素
is_saddle = false;
break;
}
}
if (is_saddle) { // 若该元素为鞍点,则输出并标记存在鞍点
cout << "Saddle point: " << max_in_row << " at (" << i << ", " << max_index << ")" << endl;
flag = true;
}
}
if (!flag) { // 若不存在鞍点,则输出提示信息
cout << "No saddle point." << endl;
}
return 0;
}
```
说明:
1. 首先输入二维数组的行数和列数,然后输入每个元素的值。
2. 对于每一行,找出该行上的最大元素和该元素的列下标,然后判断该列上的元素是否都小于该行上的最大元素,若是,则该元素为鞍点,输出并标记存在鞍点。
3. 最后若不存在鞍点,则输出提示信息。
阅读全文