輸入格式:
輸入的第1行是一個正整數n, (1<=n<=100),然后有n行,每一行有n個整數,同一行上兩個整數之間有一個或多個空格。
輸出格式:
對輸入的矩陣,如果找到鞍點,就輸出其下標。下標為兩個數字,第一個數字是行號,第二個數字是列號,均從0開始計數。
如果找不到,就輸出
NO
題目所給的數據保證了不會出現多個鞍點。
輸入樣例:
4
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 }