鞍点问题,找出一个5行5列的二维数组的鞍点,即该位置上的元素在该行元素中最大,在该列元素中最小。二维数组也可能没有鞍点。函数find判断数组a是否具有鞍点,如果有,则输出鞍点的坐标及鞍点上元素的值;如果没有,则输出“No!”。
运行结果有问题,不知道是哪里出现了问题。


鞍点问题,找出一个5行5列的二维数组的鞍点,即该位置上的元素在该行元素中最大,在该列元素中最小。二维数组也可能没有鞍点。函数find判断数组a是否具有鞍点,如果有,则输出鞍点的坐标及鞍点上元素的值;如果没有,则输出“No!”。
运行结果有问题,不知道是哪里出现了问题。


关注【以下回答由 GPT 生成】
#include<iostream>
using namespace std;
// 定义常量数组大小
const int SIZE = 5;
// 判断是否为鞍点的函数
void find(int a[SIZE][SIZE]) {
bool found = false; // 是否找到鞍点
int row = 0, col = 0; // 鞍点的行和列
// 检查每一行的最大值是否是列的最小值
for (int i = 0; i < SIZE; i++) {
int max_val = a[i][0]; // 当前行的最大值
col = 0;
// 找出当前行的最大值及对应的列
for (int j = 1; j < SIZE; j++) {
if (a[i][j] > max_val) {
max_val = a[i][j];
col = j;
}
}
// 判断最大值是否是列的最小值
bool is_saddle_point = true;
for (int k = 0; k < SIZE; k++) {
if (a[k][col] < max_val) {
is_saddle_point = false;
break;
}
}
// 若为鞍点则输出结果并结束程序
if (is_saddle_point) {
found = true;
row = i;
break;
}
}
// 输出结果
if (found) {
cout << "鞍点坐标: (" << row << ", " << col << ")" << endl;
cout << "鞍点元素值: " << a[row][col] << endl;
} else {
cout << "No!" << endl;
}
}
int main() {
// 测试数组
int a[SIZE][SIZE] = {
{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}
};
find(a);
return 0;
}
运行结果: 鞍点坐标: (2, 0) 鞍点元素值: 11