. 找出一个5行5列的二维数组的較点,即该位置上的元素在该行元素中最大,在该 列元素中最小。二维数组也可 能没有戰点。函数find 判断数组2是香其有戰点,如果有, 则输出鞍点的坐标及鞍点上元素的值;如果没有,则输出No”。数组用随机数生成。
时间: 2024-03-09 20:49:27 浏览: 66
找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小 也可能没有鞍点
以下是C++程序的示例代码:
```c++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
const int ROW = 5;
const int COL = 5;
void generateMatrix(int matrix[][COL]) {
srand(time(NULL));
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
matrix[i][j] = rand() % 10;
}
}
}
bool findSaddlePoint(int matrix[][COL], int& row, int& col) {
int rowMax, colMin;
for (int i = 0; i < ROW; i++) {
rowMax = matrix[i][0];
col = 0;
for (int j = 1; j < COL; j++) {
if (matrix[i][j] > rowMax) {
rowMax = matrix[i][j];
col = j;
}
}
colMin = matrix[0][col];
row = 0;
for (int j = 1; j < ROW; j++) {
if (matrix[j][col] < colMin) {
colMin = matrix[j][col];
row = j;
}
}
if (matrix[row][col] == rowMax) {
return true;
}
}
return false;
}
int main() {
int matrix[ROW][COL];
generateMatrix(matrix);
int row, col;
if (findSaddlePoint(matrix, row, col)) {
cout << "The saddle point is at (" << row << "," << col << ") and its value is " << matrix[row][col] << endl;
} else {
cout << "No saddle point is found" << endl;
}
return 0;
}
```
在上述程序中,我们首先定义了一个5行5列的二维数组`matrix`,并使用`generateMatrix`函数来随机生成数组中的元素。然后,我们使用`findSaddlePoint`函数来查找鞍点。在该函数中,我们首先遍历每一行,找到该行的最大值和该最大值所在的列,然后再在该列中找到最小值和该最小值所在的行。如果该最小值所在的行恰好就是该行的索引,并且该最小值等于该行的最大值,那么就说明找到了鞍点,我们将其行和列记录下来并返回`true`。如果所有行都没有找到鞍点,我们就返回`false`。最后,根据`findSaddlePoint`函数的返回值来输出结果。
阅读全文