马鞍点测试 有人解答一下吗
马鞍点测试如果矩阵A中存在这样的一个元素A满足下列条件:A是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。请编写程序求出矩阵A的马鞍点。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。
对于每组测试数据,首先输入2个正整数m、n(1 ≤ m,n ≤ 100),分别表示二维数组的行数和列数。
然后是二维数组的信息,每行数据之间用一个空格分隔,每个数组元素均在int型范围内。简单起见,假设二维数组的元素各不相同,且每组测试数据最多只有一个马鞍点。
输出格式:
对于每组测试数据,若马鞍点存在则输出其值,否则输出“Impossible”。
输入样例:
3
4 3
6 7 11
2 17 13
4 -2 3
5 9 88
4 4
1 2 3 4
12 13 14 15
23 24 25 26
34 35 36 37
2 3
6 7 11
9 8 3
输出样例:
6
34
Impossible #include <stdio.h>
int main(void)
{
int i , j , k , p , q , t ;
scanf("%d" , & t) ;
int c , d ;
for(k = 0 ; k < t ; k ++) {
scanf("%d%d" , & c , & c) ;
for(i = 0 ; i < c ; i ++) for(j = 0 ; j < c ; j ++) scanf("%d" , & d) ;
}
for(k = 0 ; k < t ; k ++) {
for(i = 0 ; i < c ; i ++) {
for(j = p = 0 ; j < c ; j ++) if(d < d) p = j ;
for(j = q = 0 ; j < c ; j ++) if(d > d) q = j ;
if(q == i) {
printf("%d\n" , d) ;
break ;
}
}
if(i == c) printf("Impossible\n") ;
}
}
编译运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
3
4 3
6 7 11
2 17 13
4 -2 3
5 9 88
4 4
1 2 3 4
12 13 14 15
23 24 25 26
34 35 36 37
2 3
6 7 11
9 8 3
6
34
Impossible
D:\\C>
页:
[1]