1. 程式人生 > >7-56 找鞍點 (20 分)

7-56 找鞍點 (20 分)

7-56 找鞍點 (20 分)

一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。

本題要求編寫程式,求一個給定的n階方陣的鞍點。

輸入格式:

輸入第一行給出一個正整數n(1≤n≤6)。隨後n行,每行給出n個整數,其間以空格分隔。

輸出格式:

輸出在一行中按照“行下標 列下標”(下標從0開始)的格式輸出鞍點的位置。如果鞍點不存在,則輸出“NONE”。題目保證給出的矩陣至多存在一個鞍點。

輸入樣例1:

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

輸出樣例1:

2 1

輸入樣例2:

2
1 7
4 1

輸出樣例2:

NONE
#include <stdio.h>
int flag = 0;               //作是否有鞍點判讀
int main () {
    int n,i,t,temp,c;
    scanf ("%d",&n);
    int a[n][n];
    for ( i=0; i<n; i++)        //輸入陣列
        for ( t=0; t<n; t++)
            scanf ("%d",&a[i][t]);
            
     for ( i=0; i<n; i++){
         for ( t=0; t<n; t++){
             int f = 1;         //f作是否是鞍點的判斷
             temp  = a[i][t];
             for ( c=0; c<n; c++){
                 if (temp < a[i][c]){    //和同行的數比較
                    f = 0;
                    break;
                 }
                 if (temp > a[c][t]){    //和同列的數比較
                    f = 0;
                    break;
                 }
             }
             if (f){
                 printf("%d %d",i,t);
                 flag = 1;          //表明有鞍點
             }
                
         }
     }
     if (!flag){
         printf("NONE");
     }
     return  0 ;
}