输入 1 个正整数 n(1≤n≤6)和 n 阶方阵 a 中的元素,假设方阵 a 最多有1个鞍点,如果找到 a 的鞍点, 就输出其下标, 否则,输出"NO"。鞍点的元素值在该行上最大, 在该列上最小。
输入:
2 (repeat=2)
4 (n=4)
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
2 (n=2)
1 7
4 1
输出:
2 1
NO */
#include "stdio.h"
int main(void)
{
int flag, i, j, hang, lie, n;
int a[6][6];
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
hang=0; lie=0; flag=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++)
if(a[i][j]>=a[i][lie] && j!=lie) lie=j; /*有并列极值元素,最后一个是鞍点*/
flag=1;
for(hang=0;hang<n;hang++){
if(a[hang][lie]<a[i][lie]){
flag=0;
break;
}
}
if(flag) break;
}
if(flag) printf("%d %d",i,lie);
else printf("NONE");
}
}