总时间限制: 内存限制:
1000ms 65536kB
描述
给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。
鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。
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
输入
输入包含一个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 main()
{
int x, y, X = 0, Y = 0, M[6][6], max[6], min[6];
for (y = 1; y < 6; y++)
for (x = 1; x < 6; x++)
{
cin >> M[x][y];
}
for (y = 1; y < 6; y++)
{
max[y] = M[1][y];
for (x = 1; x < 6; x++)
{
if (max[y] < M[x][y])
max[y] = M[x][y];
}
}
for (x = 1; x < 6; x++)
{
min[x] = M[x][1];
for (y = 1; y < 6; y++)
{
if (min[x] > M[x][y])
min[x] = M[x][y];
}
}
for ( x = 1; x < 6; x++)
{
if (X != 0 && max[X] == min[Y])
break;
else
{
for (y = 1; y < 6; y++)
{
if (max[x] == min[y])
{
X = x;
Y = y;
break;
}
}
}
}
if (max[X] == min[Y])
cout << X << " " << Y << " " << max[X];
else
cout << "not found";
return 0;
}