858.求矩阵中的马鞍点

问题描述 所设计的程序能够通过编译。若矩阵 中的某个元素 是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。编写程序求出矩阵中的所有马鞍点。

输入格式 首先输入两个整数n和m,为矩阵维数,然后输入矩阵的值。

输出格式

输出矩阵中的所有马鞍点,输出顺序:行序优先,按行、列序号递增顺序输出。

若有多个马鞍点,每个马鞍点一行。

也可能没有马鞍点,则输出NO。

样例输入

4 4
2 7 9 10
1 0 7 12
8 23 13 15
4 6 12 18

样例输出

3 1 8

#include
#include
#include
struct Point
{int row;int col;int val; Point():row(0),col(0),val(0){}Point(int r,int c,int v):row(r),col(c),val(v){}
};
void printHorsePoints(std::vector& horsePoints)
{if(horsePoints.empty()){std::cout<<"NO";return;}for(auto item : horsePoints){//point存的是点的下标,而输出是行列号,所以要+1 std::cout<>n>>m;std::vector colMax(n,INT_MIN);std::vector rowMin(m,INT_MAX);std::vector rowMinCol(n,0);for(int i=0;i>val;if(valcolMax[j]) colMax[j] = val;}rowMin[i] = minVal;rowMinCol[i] = minCol; }std::vector result;for(int i=0;i