Problem G: 求二維陣列中的鞍點【陣列】
阿新 • • 發佈:2019-02-05
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;
}