找鞍点 题目ID:9673

怎么写啊

找鞍点

题目ID:9673选做题100分

最新提交:0 分

历史最高:0 分

时间限制: 200ms

空间限制: 65535kB

题目描述

时间:0.2s 空间:64M

【题目描述】

一个矩阵的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

请你找出给定的n阶方阵的鞍点。

【输入描述】

第一行给出一个正整数n(1≤n≤50)。
随后n行,每行给出n个整数,其间以空格分隔。

【输出描述】

两个整数,表示鞍点所在的行和列。
如果鞍点不存在,则输出"NONE"。
题目保证给出的矩阵至多存在一个鞍点。

【样例输入】

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

【样例输出】

3 2

约定:

提示:

2 个赞

水题,都不用DFS的
直接双重循环遍历每行、每列,寻找鞍点( 值在该行上最大、在该列上最小)
核心代码

    for (int o = 1; o <= n; o++) {
        for (int i = 1; i <= n; i++) {
			maxn = INT_MIN;
    		for (int z = 1; z <= n; z++) {
				if(a[o][z] > maxn) {
    				maxn = a[o][z];
    			}
			}
			
			minn = INT_MAX;
			for (int h = 1; h <= n; h++) {
				if(a[h][i] < minn) {
    				minn = a[h][i];
    			}
			}
    		
    		if(a[o][i] == maxn && a[o][i] == minn) {
    			cout << o << ' ' << i ;
    			return 0;
			}
    	}
	}
	cout << "NONE" ;

解决方案