用c++找出一个五行五列的二维数组的鞍点,函数find判断数组a是否具有鞍点,如果有,则输出鞍点的坐标及鞍点上元素的值;如果没有,则输出“No!”。数组用随机数生成
时间: 2024-02-01 15:15:21 浏览: 82
以下是实现代码:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int ROW = 5;
const int COL = 5;
bool find(int a[][COL], int &row, int &col) {
for (int i = 0; i < ROW; i++) {
int min_val = a[i][0], min_col = 0;
for (int j = 1; j < COL; j++) {
if (a[i][j] < min_val) {
min_val = a[i][j];
min_col = j;
}
}
bool is_max = true;
for (int k = 0; k < ROW; k++) {
if (a[k][min_col] > min_val) {
is_max = false;
break;
}
}
if (is_max) {
row = i;
col = min_col;
return true;
}
}
return false;
}
int main() {
int a[ROW][COL];
srand(time(NULL));
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
a[i][j] = rand() % 100;
cout << a[i][j] << " ";
}
cout << endl;
}
int row, col;
if (find(a, row, col)) {
cout << "鞍点坐标为 (" << row << ", " << col << "), 值为 " << a[row][col] << endl;
} else {
cout << "No!" << endl;
}
return 0;
}
```
首先,我们定义了一个 5 行 5 列的二维数组,然后用 srand() 和 rand() 函数生成了随机数填充数组。接着,我们定义了一个名为 find() 的函数,用于查找鞍点。该函数的参数包括二维数组 a、鞍点的行号 row 和列号 col。该函数的返回值为 bool 类型,表示是否找到鞍点。
在 find() 函数中,我们首先遍历数组的每一行,找到每一行的最小值以及最小值所在的列号。然后,我们再遍历数组的每一列,如果某一列上的元素大于该列上最小元素,则该列不可能是鞍点所在的列。如果某一列上的元素都小于或等于该列上最小元素,则该列可能是鞍点所在的列。最后,我们要再次遍历整个数组,判断鞍点所在的行上的元素是否是该行上的最大值。如果是,则说明该元素是鞍点,返回 true。如果遍历完整个数组后都没有找到鞍点,返回 false。
在主函数中,我们首先用 cout 语句输出了随机生成的二维数组,然后调用 find() 函数查找鞍点。如果找到了鞍点,则输出鞍点的位置和值;否则,输出 "No!"。
阅读全文