在一个矩阵中,存在在该行中数最大,在该列中数最小的数,即为该矩阵的鞍点。
知道了鞍点的定义,我们可以编写程序,通过循环判断,先找到该在指定的行数最大的行编号,然后在循环判断是否在该列是否是最小的数。通过指针将行列的数据返回即可。代码如下:
- #include <stdio.h>
-
-
int getSaddlePoint(int *x, int *y, int (*A)[5], int m, int n)
-
{
-
int max, i, j, k, flag;
-
for(i=0; i<m; i++)
-
{
-
max = 0;
-
flag = 1;
-
for(j=1; j<n; j++)
-
{
-
if(A[i][j] > A[i][max])
-
max = j;
-
}
-
-
for(k=0; k<n; k++)
-
{
-
if(A[i][max] == A[i][k] && max != k)
-
{
-
flag = 0;
-
break;
-
}
-
}
-
-
if(flag == 1)
-
{
-
for(k=0; k<m; k++)
-
{
-
if(A[k][max] <= A[i][max] && k != i)
-
{
-
flag = 0;
-
break;
-
}
-
}
-
}
-
-
if(flag == 1)
-
{
-
*x = i;
-
*y = max;
-
return 1;
-
}
-
}
-
return 0;
-
}
-
-
int main(int argc, char *argv[])
-
{
-
int A[5][5],i,j,x,y;
-
printf("please input some digit into the 5*5 matrix\n");
-
for(i=0; i<5; i++)
-
for(j=0;j<5;j++)
-
scanf("%d",&A[i][j]);
-
-
if(getSaddlePoint(&x,&y,A,5,5))
-
printf("\n saddlePoint is at (%d,%d)",x+1, y+1);
-
else
-
printf("\nthere is no in the matrix\n");
-
return 0;
-
-
}
阅读(5464) | 评论(0) | 转发(0) |