找出矩陣的鞍點


輸入格式:

輸入的第1行是一個正整數n, (1<=n<=100),然后有n行,每一行有n個整數,同一行上兩個整數之間有一個或多個空格。

 

輸出格式:

對輸入的矩陣,如果找到鞍點,就輸出其下標。下標為兩個數字,第一個數字是行號,第二個數字是列號,均從0開始計數。

如果找不到,就輸出

NO

題目所給的數據保證了不會出現多個鞍點。

 

輸入樣例:

1 7 4 1 

4 8 3 6 

1 6 1 2 

0 7 8 9

 

輸出樣例:

2 1

代碼:

 1 #include <stdio.h>
 2 
 3 /*
 4 1、 創建給定大小的矩陣
 5 2、 讀入輸入的數,填充矩陣
 6 3、 找出行中最大的數的下標(x,y) 
 7 4、 找出行最大數的那一列中最小數的 (x1,y)
 8 5、 如果x1=x,那x,y就是我們要找的鞍點,如果不等於就檢查下一行,
 9 回到 3,直到所有行檢查完。 
10  
11 */
12 int main()
13 {
14     int size;
15     scanf("%d", &size);
16     int board[size][size];
17     int i, j, t;
18     int x, y, x1;
19     int mark=0;
20     
21     // 讀入矩陣
22     for ( i=0; i<size; i++ ){
23         for ( j=0; j<size; j++ ){
24             scanf("%d", &board[i][j]);
25         }
26     } 
27     
28     
29     for ( i=0; i<size; i++ ) {
30         for ( j=0, x=i, y=0; j<size; j++ ){    //
31             if ( board[i][j] > board[x][y] ){ 
32                 x=i, y=j; 
33             }
34         }
35         for ( x1=0, j=y, t=0; t<size; t++ ){    //
36             if ( board[t][j] < board[x1][j] ){
37                 x1=t;
38             }
39         }
40         if ( x==x1 ){     //判斷是否是鞍點 
41             mark=1;
42             printf("%d %d", x, y);
43             break;
44         }
45     }
46     if ( mark==0 ){
47         printf("NO");
48     }
49     return 0;
50 } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM