1. 程式人生 > >Problem G: 求二維陣列中的鞍點【陣列】

Problem G: 求二維陣列中的鞍點【陣列】

Description
如果矩陣A中存在這樣的一個元素A[i,j]滿足條件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,則稱之為該矩陣的一個馬鞍點。請程式設計計算出m*n的矩陣A的所有馬鞍點。

Input
輸入m,n

然後輸入陣列中的每個元素

Output
輸出m*n的矩陣A的所有馬鞍點

Sample Input
3 3
1 7 3
5 4 6
17 18 9
Sample Output
9

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int
m,n,i,j; scanf("%d%d",&m,&n); // 輸入陣列大小 int a[m+1][n+1],p,f=1; //定義陣列變數 for(i=1;i<=m;i++) //迴圈輸入陣列 for(j=1;j<=n;j++) scanf("%d",&a[i][j]); for(i=1;i<=m;i++) //每一行上的元素 { for(j=1;j<=n;j++) { if
(a[i][f]>a[i][j]) f=j;//找出每一行元素的最小值 } for(p=1;p<=m;p++) //迴圈判斷每一行元素的最小值是否是它所在列的最大值 if(a[i][f]<a[p][f]) break; if(p==m+1) printf("%d\n",a[i][f]);//如果是則輸出 f=1; } return 0; }