题目描述
如果矩阵 A中存在这样的一个元素 Aij满足条件 Aij 是第 i 行中值最小的元素,且又是第 j 列中值最大的元素,则称之为该矩阵的一个马鞍点。请编程计算出 m×n 的矩阵 A的马鞍点。
输入
输入 m,n;
然后输入数组中的每个元素。
输出
输出 m×n 的矩阵 A 的所有马鞍点。题目保证每组数据中的马鞍点存在且唯一。
输入输出样例
样例输入 #1
3 3
1 7 3
5 4 6
17 18 9
样例输出 #1
9
以下为代码实现:
#include <stdio.h>
int main()
{ int m,n;
scanf("%d %d",&m,&n);
int A[m][n];
int i,j;
int mini[m],maxj[n];
int flag=0;
for( i=0;i<m;i++)
for( j=0;j<n;j++)
{
scanf("%d ",&A[i][j]);
}
for(i=0;i<m;i++)
{
mini[i]=A[i][0];}
for(j=0;j<n;j++) {
maxj[j]=A[0][j];
}
for(i=0;i<m;i++)
for( j=1;j<n;j++) //注意这里j的范围
{
if(A[i][j]<mini[i]){
mini[i]=A[i][j];
}
}
for(j=0;j<n;j++)
for(i=1;i<m;i++){ //注意这里i的范围
if(A[i][j]>maxj[j])
maxj[j]=A[i][j];
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(A[i][j]==mini[i]&&A[i][j]==maxj[j]){
printf("%d",A[i][j]);
flag=1;}
}}
return 0;
}