求高手帮找bug解决方案

求高手帮找bug
这是一个求鞍点的函数(鞍点就是在它所在的行跟列都是最大的数),我算法的思想是先找出某一行的最大的数,然后再用它跟它所在列所有的数相比,如果它还是最大的数的话,那它就是鞍点,函数如下:

void andian(int (* aptr)[MAXLINE])
{
  int (* ptr)[MAXLINE]=aptr;
  int i,j,k,n;
  for(i=0;i<MAXLINE;i++)
  {
  j=0;
for(k=0;k<MAXLINE;k++)
{
if((*(*(ptr+i)+j))<(*(*(ptr+i)+k)))
{
j=k;
}
}
n=1;
for(k=0;k<MAXLINE;k++)
{
if((*((*(ptr+i))+j))>(*((*(ptr+k))+j)))
n++;
else break;
}
if(n==MAXLINE)
printf("鞍点找到了!!他的行标为%d,列标为%d,数值为%d\n",i+1,j+1,*(*(ptr+i)+j));
  }
}

------解决方案--------------------
C/C++ code
void andian(int (* aptr)[MAXLINE])
{
    int (* ptr)[MAXLINE]=aptr;
    int i,j,k,n;
    for(i=0;i<MAXLINE;i++)
    {
        j=0;
        for(k=0;k<MAXLINE;k++)
        {
            if((*(*(ptr+i)+j))<(*(*(ptr+i)+k)))
            {
                j=k;
            }
        }
        n=0;
        for(k=0;k<MAXLINE;k++)
        {
            if((*((*(ptr+i))+j))>(*((*(ptr+k))+j)) || k==j)
                n++;
            else
                break;
        }
        if(n==MAXLINE)
            printf("鞍点找到了!!他的行标为%d,列标为%d,数值为%d\n",i+1,j+1,*(*(ptr+i)+j));
    }
}

------解决方案--------------------
举个例子
C/C++ code
#include <stdio.h>

void find_saddle_point(int a[3][3])
{
    int i, j;

    for (i = 0; i < 3; i++)
    {
        int *tmp = &a[i][0];
        int saddlepoint = 0;

        for (j = 0; j < 3; j++)
        {
            if (saddlepoint < tmp[j])
            {
                saddlepoint = tmp[j];
            }
        }
        
        printf("%d\n", saddlepoint);
    }
}

int main(void)
{
    int a[3][3] = {1,3,5,23,4,6,7,8,3};
    
    find_saddle_point(a);

    return 0;
}