#include<iostream>
#include<cmath>
using namespace std;
int main(){
int a[5][5];
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
cin >>a[i][j];
int ma=0,m,n,l=0,p=0;
for(int i=0;i<5;i++,l=0,ma=0){//重置l和ma的值
for(int j=0;j<5;j++){
if(a[i][j]>ma){
ma=a[i][j];//找出一行的最大值并将坐标保存在m,n里
m=i;n=j;
}
for(int k=0;k<5;k++){//判断一行的最大值是不是一列的最小值
if(a[k][n]<ma){//只要有比ma小的就不是鞍点
l=1;
break;
}
}
}
if(l==0)//没有比ma小的值
break;
}
if(l==1)//因为每次都会重置,如果中间有符合鞍点的值就直接跳出循环了。所以最后一次l==1的话就说明没有鞍点
cout <<"not found";
else
cout <<m+1<<" "<<n+1<<" "<<a[m][n];
}
之后换个思路吧。有问题。头大.jpg