从一个二维数组中,寻找马鞍点,马鞍点的特点就是在一个维度上是最小值,在另一个维度上为最大值,就马鞍中间的那个点,需要进行两次比较,一个维度的比较找到最小值,再把此最小值跟另一个维度上的数比较是否为最大值来找到马鞍点,需要三个循环变量,一个标志量。
void Get_Saddle(int A[m][n])
{
int i,j,flag,min,k;
for(i=0;i<m;i++)
{
min=A[i][0];
for(j=0;j<n;j++)
{
if(A[i][j]<min)
min=A[i][j];/*求第i行的最小值*/
for(j=0;j<n;j++)
if(A[i][j]==min) /* 判断此最小值是否为马鞍点*/
{ flag==1;
for(k=0;k<n;k++)
if(min<A[k][j]) flag=0;
if(flag)
printf("Found a saddle element !\n A[%d][%d]=%d",i,j,A[i][j]);
}
}
}
printf("\n");
}