描述

给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。

  1. 11 3 5 6 9
  2. 12 4 7 8 10
  3. 10 5 6 9 11
  4. 8 6 4 7 2
  5. 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


限制

时间限制:1000 ms
内存限制:65536 KB


代码

#include<stdio.h>
int main()
{
    int cur[5][5];
    int ans;
    int i,j,f,m,n,y,h,l;
    int flag;
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
        {
            scanf("%d", &cur[i][j]);
        }
    }
    /*int a, b;
    for (a = 0; a < 5; a++)
    {
        for (b = 0; b < 5; b++)
        {

            printf("%d ",cur[a][b]);
            if (b == 4)
            {
                printf("\n");
            }
        }
    }
    */

    int max_x,min_y;
    for (m = 0; m < 5; m++)
    {
        flag = 0;
        max_x = cur[m][0];
        y = 0;
        for (n = 0; n < 5; n++)
        {

            if (cur[m][n] >max_x)
            {
                max_x = cur[m][n];
                y = n;
            }
        }
        int t;
        min_y = max_x;
        for (t = 0; t < 5; t++)
        {

            if (cur[t][y] <min_y)
            {
                //min_y = cur[t][y];
                goto a;

            }
        }
        h = m+1; l = y+1;
        ans = min_y;
        goto b;
    a:
        flag = 1;


    }
    if (flag == 1)
    {
        printf("not found\n");
        return 0;
    }
    b:

        printf("%d %d %d\n",h,l,ans);

    return 0;
}