giegie666 发表于 2022-11-13 19:06:18

马鞍点测试 有人解答一下吗

马鞍点测试
如果矩阵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

jackz007 发表于 2022-11-13 20:14:03

#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]
查看完整版本: 马鞍点测试 有人解答一下吗