#include <stdio.h>
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int i,j;
int a[m][n];
int flag=0;//假设不存在;
int max;int min;
//输入矩阵
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
//找鞍点
for (i=0;i<m;i++)//控制行
{
max=0;//每次用完都要更新;
min=0;
for (j=0;j<n;j++)//从第一列开始
{
if (a[i][j]>=a[i][max])
max=j;
}
for (j=0;j<m;j++)
{
if (a[j][max]<a[min][max])
min=j;
}
if (i==min)//鞍点只可能在i行出现,如果求出点的min行==i,则就是鞍点;
flag=1;
}
if (flag==0)
printf ("None");
else
printf ("Array[%d][%d]=%d",min,max,a[min][max]);
return 0;
}
大体来讲主要分:
1.先输入一个矩阵
2.循环遍历每一行,找出每行的最大值,(用下标的话,就是找出么每行的max)
3.接着在max这一列中遍历列,找出最小值,再记下min下标
4.最后加判断,只有min==i(也就是当前行),说明有鞍点