天天看点

题目:计算鞍点

题目

给定一个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;
}