马鞍数

题目描述

求一个n×m数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上最小而在列上最大的数。
如下: n=5 m=5
5 6 7 8 9
4 5 6 7 8
3 4 5 2 1
2 3 4 9 0
1 2 5 4 8
则1行1列上的数就是马鞍数。

输入

共n+1行,第一行: n m (n,m<10) 第2到n+1行:每行m个整数(每个数都<10)

输出

输出若干行:如果存在马鞍数,则输出所有马鞍数,每行一个,为行和列以及马鞍数。 如果不存在马鞍数,则输出'not exit'。

样例输入 [复制]

9 8

9 8 7 6 5 4 3 2

8 8 9 9 9 9 9 9

3 7 7 6 5 4 2 1

8 8 3 2 1 7 3 2

7 5 3 2 9 1 3 2

6 3 2 1 9 3 1 3

8 2 1 3 5 8 9 1

1 3 2 1 3 5 6 8

9 3 1 2 3 4 5 8

样例输出 [复制]

2 2 8

由于本人很菜,先附上最低级没效率的代码,以后变强了回来补充的。

​#include<stdio.h>
int main()
{
    int n,m,a[100][100],min;
    int i,j,k,flag,flag2=0;
    scanf("%d%d",&n,&m);
    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
            scanf("%d",&a[i][j]);
    for(i=0; i<n; i++)
    {
        min=a[i][0];
        for(j=0; j<m; j++)
        {
            if(a[i][j]<min)
                min=a[i][j];
        }
        for(j=0; j<m; j++)
        {

            if(a[i][j]==min)
            {
                flag=1;
                for(k=0; k<n; k++)

                    if(a[k][j]>min)
                    {
                        flag=0;
                        break;
                    }

                if(flag)
                {
                    flag2=1;
                    printf("%d %d %d\n",i+1,j+1,a[i][j]);
                }
            }

        }

    }
    if(flag2==0)
        printf("not exit\n");


}​

猜你喜欢

转载自blog.csdn.net/qq_43723073/article/details/86372581