用c++求找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。
时间: 2023-09-09 21:08:03 浏览: 100
找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小 也可能没有鞍点
好的,我来回答你的问题。
首先,我们需要了解什么是鞍点。鞍点是指一个矩阵中,某一元素在其所在行上最大,而在其所在列上最小,那么这个元素就是该矩阵的鞍点。
接下来,我们可以通过两次遍历来寻找鞍点。首先,我们需要遍历每一行,找到该行的最大值。然后,我们再遍历该列,找到该列的最小值。如果该行的最大值与该列的最小值相等,那么我们就找到了鞍点。
以下是用 C++ 编写的代码实现:
```c++
#include <iostream>
using namespace std;
int main() {
int m, n;
cout << "请输入二维数组的行数和列数:" << endl;
cin >> m >> n;
int a[m][n];
cout << "请输入二维数组的元素:" << endl;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
bool flag = false;
for (int i = 0; i < m; i++) {
int max = a[i][0];
int column = 0;
for (int j = 1; j < n; j++) {
if (a[i][j] > max) {
max = a[i][j];
column = j;
}
}
int min = a[0][column];
for (int k = 1; k < m; k++) {
if (a[k][column] < min) {
min = a[k][column];
}
}
if (max == min) {
cout << "鞍点为:(" << i << "," << column << ")" << endl;
flag = true;
}
}
if (!flag) {
cout << "该二维数组没有鞍点!" << endl;
}
return 0;
}
```
这段代码中,我们首先输入了二维数组的行数和列数,然后输入二维数组的元素。接着,我们用两次循环来分别找到每一行的最大值和每一列的最小值,并判断是否相等。最后,我们输出鞍点的位置,如果没有鞍点,就输出相应的提示信息。
希望这个回答能够帮助到你!
阅读全文