C语言找矩阵中的鞍点

2019-12-19  本文已影响0人  David_Rao
找矩阵中的鞍点

Description
由键盘输入一个3*4(3行4列)的矩阵,输出矩阵中的鞍点(即在矩阵行中最大,列中最小的数)。
若没有鞍点,输出“NO”字样。


输入样例
87  90  110  98
70  97  210  65
98  45  120  30


输出样例
110
#include <stdio.h>
#include <stdlib.h>
#define ROW 3
#define COL 4

int main()
{
    int matrix[ROW][COL];
    int i, j, k, rowMax, rowMaxColIndex, haveAnswer=0;
    for(i=0;i<ROW;i++){
        for(j=0;j<COL;j++){
            scanf("%d", &matrix[i][j]);
        }
    }
    for(i=0;i<ROW;i++){ //遍历每行
        rowMax = matrix[i][0];
        rowMaxColIndex = 0; //将当前行的第一个元素作为擂主
        for(j=1;j<COL;j++){
            if(matrix[i][j] > rowMax){
                rowMax = matrix[i][j];
                rowMaxColIndex = j; //找到当前行最大值
            }
        }
        for(k=0;k<ROW;k++){ //遍历对应列的每一行
            //但凡列中出现比它小的,即它不是列中最小的,退出循环
            if(matrix[k][rowMaxColIndex] < rowMax) break;
        }
        //如果遍历到最后的没有退出循环,即它是鞍点
        if(k==ROW){haveAnswer=1; printf("%d\n", matrix[i][rowMaxColIndex]);}
    }
    if(!haveAnswer) printf("NO");
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读