鞍点:这个点必须为这一行中的最大值并且是这一列中的最小值
废话不多说,直接上代码:

#include<bits/stdc++.h>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int main()
{
bool flag; //声明一个布尔变量;
int a[100][100];
int n,m;
int i,j;
int k,max,maxj; //maxj为该行最大值的列标
cin>>n>>m;

for(i=0; i<n; i++){
for(j=0; j<m; j++){
cin>>a[i][j];
}
}


for(i=0; i<n; i++){ //求出该行的最大值的列下标;{
k=a[i][0];
max=0;
for(j=0; j<m; j++){
if(a[i][j]>k){
max=a[i][j];
maxj=j;
k=max;
}
}

flag=true; //默认flag为真
for(k=0; k<n; k++){ //判断该行是否是其所在列的最小值;
if(max>a[k][maxj]){
flag=false; //如果不是最小,继续下一行(i=1)的内循环
}
}

if(flag){ //如果是最小,则输出
cout<<"a["<<i<<"]["<<maxj<<"]="<<max;
cout<<endl;
break;
}
}


if(!flag){
cout<<"这个数不存在!";
}
return 0;
}