二维数组查找满足指定条件的数

  • 【问题描述】

在一个二维数组中找出符合以下条件的元素:此元素在所在行为最小,在所在列最大(也可能没有这样的元素)。
【输入形式】

3行数据,每行4个数,用空格分隔

【输出形式】

一个整数
【样例输入1】

11 22 13 14

35 26 47 48

13 16 66 12

【样例输出1】

26

【样例输入2】

1 22 3 4

5 66 7 8

9 8 11 12

【样例输出2】

Can not find!

#include
#include
#include
#include
using namespace std;
#define N 4
#define M 3
int findmax(int (*y)[N], int n);
void myFind(int (*p)[N]);
int findmin(int *x, int *getcol);
int main()
{
int a[M][N] = {1, 22, 3, 4, 5, 66, 7, 8, 9, 8, 11, 12}, i, j;
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
cin>>a[i][j];
}
myFind(a);
return 0;
}
void myFind(int (*p)[N])
{ int row,flag=0,min,max;

int *getcol=0;int b[N];int n=0;
for(;n<N;n++)
{max=findmax(p,n);
for(int y=0;y<M;y++)
if(p[y][n]==max)row=y;
for(int i=0;i<N;i++)
{b[i]=p[row][i];}
min=findmin(b,getcol);
if(*getcol==n&&min==max)
{cout<<min;flag=1;break;}}
if(!flag)cout<<"Can not find!";

}
int findmax(int (y)[N],int n)
{ int k,max;
max=
(y[0]+n);
for(k=0;k<M;k++)
if(max<(y[k]+n))
max=*(y[k]+n);
return max; //返回二维数组第n列的最大值
}
int findmin(int *x,int *getcol)
{ int t,min;
min=*x; *getcol=0;
for(t=0;t<N;t++)
if(min>
(x+t))
min=*(x+t),*getcol=t; //t表示最小值在一维数组中位置(下标)
return min;
}
其中myFind函数错了,但不知道错哪了?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^