【C语言】找出任意一个二维数组中的鞍点。 所谓鞍点,即是该位置上的元素在所在行中最大而在所在列中最小。一个二维数组中可能有多个鞍点,也可能没有鞍点。要求输出所有鞍点的位置,无鞍点时给出有关信息。

《C语言》找出任意一个二维数组中的鞍点。 所谓鞍点,即是该位置上的元素在所在行中最大而在所在列中最小。一个二维数组中可能有多个鞍点,也可能没有鞍点。要求输出所有鞍点的位置,无鞍点时给出有关信息。

参考代码如下:

#include <stdio.h>
/*
找出一个二维数组中的鞍点,即该位置上的元素在该行最大,
在该列上最小,也可能没有鞍点。存在则输出坐标;否则输出 -1.
*/
int main(void)
{
    int a[3][3], max, min, i, j, k, m;
    for (i = 0; i < 3; i++)
        for (j = 0; j < 3; j++)
            scanf("%d", &a[i][j]); //输入数组
    for (i = 0; i < 3; i++)
    {
        max = a[i][0]; //给max 赋初始值
        for (j = 0; j < 3; j++)
            if (a[i][j] > max)
            {
                max = a[i][j];
                k = j; //找到第i行的最大值;
            }
        min = max;              //把max的值作为第k列的最小值
        for (m = 0; m < 3; m++) //第k列保持不变,变换行数m
        {
            if (min > a[m][k]) //若不符合鞍点性质,则break结束
                break;
        }
        if (m == 3)
        {
            printf("%d %d", i + 1, k + 1); //遍历完当前列,若当前值符合鞍点性质,
            break;                         //则输出鞍 点坐标
        }
    }
    if (i == 3)
        printf("%d", -1); //若整个数组遍历完成,还未找到鞍点,则返回-1
    return 0;
}

如有帮助,望采纳!谢谢!