方阵中的鞍点判断(数组)

在这里插入图片描述在这里插入图片描述

#include <stdio.h>
#include <string.h>
int linemax_column_number(int a[][6],int m,int i);
int columnmin(int a[][6],int m,int j);

int main()
{
    int a[6][6];
    int m = 0;
    int x = 0 ,y = 0;

    while ( scanf("%d",&m) != EOF)
    {   
        
        for(int i = 0;i<m;i++)
        {
            for(int j = 0;j < m;j++)
            {
                scanf("%d",&a[i][j]);
            }
        }//结束读入/
        
        int flag = 0;
        for(int i = 0;i<m;i++)
        {
            if((x = linemax_column_number(a,m,i)) >= 0 && (y = columnmin(a,m,x)) >= 0);//j(max)

            {
                if(a[i][x] ==  y )
                {
                    printf("%d %d\n",i,x);
                    flag = 1;
                    break;
               
                }  
            }   
        } 

        if(flag == 0)
        {
            printf("NO\n");
        }

    } 

} 


/* 找出各行最大元素所在列,如果唯一,则返回列号
(i行号由实参传入) */
int linemax_column_number(int a[][6],int m,int i)
{   int j=0;
    //int linemax = 0;//初始化最大元素为linemax=0,考虑负数的情况,=0,并不保险.宜设为某个输入的元素.
    int linemax = a[i][0];
    int linemax_column_number = 0;
    for( j = 1 ;j<m;j++)
    {
        if(linemax<a[i][j])//
        {
           
            linemax = a[i][j];
            linemax_column_number = j;//共享if语句

        }
       
    }//
    /* 判定行最大元素是否具有唯一性,不唯一则返回-1 */
    int maxs = 0;
    for(int j = 0 ;j<m;j++)
    {
        if(linemax == a[i][j]) maxs += 1;
    }
    if(maxs>1) return -1;
   

    return linemax_column_number;
}

/* 求基于linemax_column_number这一列号所对应列的最小值 */
int columnmin(int a[][6],int m,int j)//列
{   
    int i = 0;
    int  columnmin = a[i][j];
    //这里的初始化不可过于随意.
    for(i = 1;i<m;i++)
    {   
       
        if (columnmin>a[i][j])//是否偏大
        {
            columnmin = a[i][j];
        }  
    }
/* 判定最小值是否具有唯一性,若没有,返回-1 */
    int mins = 0;
    for(int i = 0 ;i<m;i++)
    {
        if(columnmin == a[i][j]) mins += 1;
    }
    if(mins>1) return -1;
    return columnmin;/* 返回该列唯一的最小值元素(如果有) */
}
posted @ 2023-04-09 00:02  xuchaoxin1375  阅读(14)  评论(0)    收藏  举报  来源