#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int n, arr[6][6], i, j, k, flag = 1, temp = 0, max;
scanf("%d", &n);
for ( i = 0; i < n; i++)
for ( j = 0; j < n; j++)
scanf("%d", &arr[i][j]);
for ( i = 0; i < n; i++){
temp = 0; //初始化该行的第一个数为该行最大值
for ( j = 1; j < n; j++){
if ( arr[i][j] >= arr[i][temp]) //注意中间判断条件 >= 不然2测试点过不去,以后找最大值也可直接写上 >=
temp = j;
}
for (k = 0; k < n; k++){ //固定列数变换行数
if (arr[i][temp] > arr[k][temp]) //这一列有一个数比这个数小则这个数不是鞍点
flag = 0;
}
if (flag){ //是鞍点则直接打印
printf("%d %d", i, temp);
return 0;
}
flag = 1;
}
printf("NONE"); //上面循环完程序还没有终止说明没有鞍点
return 0;
}
我刚开始将每一行的第一个元素赋值给max,然后判断该行其他元素,找最大值并把最大值的下标赋给temp发现不行,就又直接一开始就把该行最大值的列下标赋值为0就能过测试点了。有懂的老哥还请能在评论区留言,看见必回。