【例5.1】 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。
算法如下:
void saddle (int A[ ][ ],int m, int n)
/*m,n分别表示矩阵A的行和列*/
{
int i,j,min;
for (i=0;i<m;i++) /*按行处理*/
{
min=A[i][0];
for (j=1; j<n; j++)
if (A[i][j]<min ) /*找第i行最小值*/
min=A[I][j];
for (j=0; j<n; j++) /*检测该行中的每个最小值是否是鞍点*/
if (A[i][j]==min )
{
k=j;
p=0;
while (p<m && A[p][j]<min)
p++;
if ( p>=m)
printf ("%d,%d,%d\n", i ,k,min);
} /* if */
} /*for i*/
}