寻找鞍点
#include <stdio.h>
int main()
{
int a[6][6];
int i,j,max,min,flag=0,n,hang,lie;//flag说明,若flag为1时即判断出有鞍点,反之则无
int k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
max=0;
for(i=0;i<n;++i)//这里的for循环是为了控制循环的次数
{
max=0;//每次外循环后,max置零,因为是在每行找最大值,就这里搞了我半天
for(j=0;j<n;++j)//这里的for循环是找出每行的最大值
{
if(max<a[i][j])
{
max=a[i][j];
lie=j;
hang=i;
}
}
min=max;//得到该行最大值然后开始进行该数在该列的比较,即判断其是否为最小值
for(k=0;k<n;++k)
{
if(min>a[k][lie])//当发现这个数不是该列的最小值,跳出循环,取消比较
{
flag=0;
break;
}//当循环完后,若if仍未执行,令flag=1,即该数为该列最小值,
flag=1;
}
if(flag==1)
{
break;//因为给出的二维数组只有一个鞍点,找出后,直接跳出全部的循环,进行输出
}
}
if(flag==1)
{
printf("%d %d\n",hang,lie);
}
if(flag!=1)
{
printf("NONE\n");
}
return 0;
}
第一次写博客,请大佬多多指教