. 找出一个5行5列的二维数组的較点,即该位置上的元素在该行元素中最大,在该 列元素中最小。二维数组也可 能没有戰点。函数find 判断数组2是香其有戰点,如果有, 则输出鞍点的坐标及鞍点上元素的值;如果没有,则输出-No1”。数组用随机数生成。
时间: 2024-03-09 21:49:56 浏览: 57
好的,以下是满足你要求的 C++ 代码实现:
```c++
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
bool find(int** a, int row, int col) {
int max, min;
for (int i = 0; i < row; i++) {
max = a[i][0];
for (int j = 0; j < col; j++) {
// 找该行最大值
if (a[i][j] > max) {
max = a[i][j];
}
}
for (int j = 0; j < col; j++) {
// 判断该行最大值是否也是该列最小值
if (a[i][j] == max) {
min = a[0][j];
for (int k = 0; k < row; k++) {
if (a[k][j] < min) {
min = a[k][j];
}
}
if (min == max) {
cout << "鞍点坐标为(" << i << ", " << j << "),值为" << max << endl;
return true;
}
}
}
}
cout << "该数组没有鞍点" << endl;
return false;
}
int main() {
const int row = 5, col = 5;
int** a = new int* [row];
srand((unsigned)time(NULL));
for (int i = 0; i < row; i++) {
a[i] = new int[col];
for (int j = 0; j < col; j++) {
a[i][j] = rand() % 10;
cout << a[i][j] << " ";
}
cout << endl;
}
find(a, row, col);
for (int i = 0; i < row; i++) {
delete[] a[i];
}
delete[] a;
return 0;
}
```
程序首先生成一个 5 行 5 列的二维数组,并随机赋值。然后调用 `find` 函数来查找鞍点。在函数中,首先遍历每一行,找到该行的最大值,并在该行中查找是否有该最大值,若有,则继续查找该最大值是否也是该列的最小值,若是,则找到了鞍点,输出鞍点的坐标和值。若遍历完整个数组仍未找到鞍点,则输出提示信息。最后释放动态分配的内存。
阅读全文