二维数组中的鞍点,即该位置上的元素是所在行上的最大值,是所在列上的最小值。
二维数组也可能没有鞍点。
输入一个二维数组的行数n,列数m,二维数组的诸元素值;输出数组的鞍点,以及鞍点所在的行列号。
输入:第一行为矩阵的行数和列数,从第二行开始,为矩阵本身(假设输入的矩阵只有0和1个鞍点)
3 4
1 3 5 3
2 3 4 1
3 2 6 7
输出:
Point: a[1][2] == 4 (下标从0开始)
#include<stdio.h>
int main()
{
int a[100][100],m,n,x[100],y[100],sum=0;
scanf("%d%d",&m,&n);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<m;i++)
{
x[i]=a[i][0];
for(int j=1;j<n;j++)
{
if(a[i][j]>x[i])
x[i]=a[i][j];
}
}
for(int j=0;j<n;j++)
{
y[j]=a[0][j];
for(int i=1;i<m;i++)\
{
if(a[i][j]<y[j])
y[j]=a[i][j];
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(a[i][j]==x[i]&&a[i][j]==y[j])
{
printf("Point:a[%d][%d]==%d\n",i,j,a[i][j]);
sum++;
}
}
}
if(sum==0)
printf("No Point\n");
return 0;
}