计算矩阵的马鞍点 刚学数组

编程实现:输入一个不超过10x10的矩阵,计算矩阵的马鞍点,马鞍点即它的值在行中最大 ,在它所在的列中最小。、

【示例1】

【输入】

3 3

1 2 3 4 5 6 7 8 9

【输出】

3

【样例2】

【输入】

3 3

1 2 6 4 5 3 7 8 9

【输出】

no saddle

#include <stdio.h>

#define N 10

int main()
{
    int a[N][N], m, n, i, j, k, x, found;
    scanf("%d%d", &m, &n);
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            scanf("%d", &a[i][j]);
    found = 0;
    for (i = 0; i < m; i++)
    {
        k = 0;
        x = a[i][0];
        for (j = 1; j < n; j++)
        {
            if (a[i][j] > x)
            {
                x = a[i][j];
                k = j;
            }
        }
        for (j = 0; j < m; j++)
            if (a[j][k] < x)
                break;
        if (j == m) {
            printf("%d\n", x);
            found = 1;
        }
    }
    if (!found)
        printf("no saddle\n");
    return 0;
}

供参考:

#include<stdio.h>
#define N 10
int main()
{
    int m, n, k, max, min, i, j, a[N][N] = { 0 };
    int row = 0, col = 0;
    scanf("%d %d", &m, &n);
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            scanf("%d", &a[i][j]);
    for (i = 0; i < m; i++)
    {
        max = a[i][0];
        for (j = 0; j < n; j++)
        {
            if (a[i][j] > max)
            {
                max = a[i][j];
                col = j;
            }
        }
        min = a[0][col];
        for (k = 0; k < m; k++)
        {
            if (a[k][col] < min)
            {
                min = a[k][col];
                row = k;
            }
        }
        if (max == min){
            printf("%d\n", a[row][col]);
            break;
        }
    }
    if (max != min)
        printf("no saddle\n");
    return 0;
}