用c++找出一个五行五列的二维数组的鞍点,函数find判断数组a是否具有鞍点,如果有,则输出鞍点的坐标及鞍点上元素的值;如果没有,则输出“No!
时间: 2024-02-01 09:15:16 浏览: 81
以下是用C++实现的代码:
```c++
#include <iostream>
using namespace std;
const int ROW = 5; // 行数
const int COL = 5; // 列数
bool find(int a[][COL]) {
for(int i = 0; i < ROW; i++) {
// 找出第i行的最小值
int min_value = a[i][0];
int min_col = 0;
for(int j = 1; j < COL; j++) {
if(a[i][j] < min_value) {
min_value = a[i][j];
min_col = j;
}
}
// 判断最小值是否也是第min_col列的最大值
bool is_saddle_point = true;
for(int k = 0; k < ROW; k++) {
if(a[k][min_col] > min_value) {
is_saddle_point = false;
break;
}
}
// 如果是鞍点,则输出并返回true
if(is_saddle_point) {
cout << "Saddle point found: (" << i << ", " << min_col << ") = " << min_value << endl;
return true;
}
}
// 没有鞍点,返回false
return false;
}
int main() {
int a[ROW][COL] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
};
if(!find(a)) {
cout << "No!" << endl;
}
return 0;
}
```
上述代码中,我们先定义了一个常量ROW和COL,分别表示数组的行数和列数。然后编写了一个名为find的函数,用于判断是否存在鞍点。在该函数中,我们遍历每一行,找出该行的最小值,并记录最小值所在的列号。然后再遍历该列,判断是否也是该列的最大值。如果是,则说明找到了一个鞍点,输出并返回true。如果遍历完所有行都没有找到鞍点,则返回false。
在main函数中,我们首先定义了一个5行5列的二维数组a,并初始化了它的值。然后调用find函数判断是否存在鞍点,如果不存在,则输出"No!"。
阅读全文