题目
给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,他所在的行的最大值,且是所在列的最小值。
输入
输入一个五行五列的矩阵
输出
如果存在鞍点,输出鞍点所在的行、列及其值。如果不存在,输出“not found"
样例输入输出
【输入】
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
【输出】
4 1 8
源代码
#include<iostream>
using namespace std;
int a[5][5];
int main() {
//输入数组
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
cin >> a[i][j];
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
int h, k; //定义循环变量
int flag = 0; //标志:表示是否有鞍点存在
//寻找该元素所在行是否更大的值
for (h = 0; h < 5; h++) {
if (a[i][h] > a[i][j]) {
break;
}
}
//寻找该元素所在列是否有更小的值
if (h == 5) {
for (k = 0; k < 5; k++) {
if (a[k][j] < a[i][j]) {
break;
}
}
}
if (k == 5) {
flag = 1; //表示存在鞍点
cout << i + 1 << " " << j + 1 << " " << a[i][j] << endl;
}
h = k = 0; //循环变量重新置0,开始下次查找
}
}
if (flag == 0) {
cout << "Not found" << endl;
}
return 0;
}