C语言求一个二维数组鞍点
/*一个二维数组的鞍点(行中最大,列中最小)
*/
#include<stdio.h>
#define N 3
#define M 4
int main()
{
int a[N][M];
int i,j,i1,max,min,t=0,c=0;
int b[4];
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
for(i=0;i<N;i++)
{
max=a[i][0];
for(j=1;j<M;j++)//找出每行的最大值
{
if(a[i][j]>max)
{
max=a[i][j];
}
}
for(j=0;j<M;j++)//记录下每行所有与最大值相等的元素下标
{
if(a[i][j]==max)
{
b[t]=j;
t++;
}
}
min=max;
//让每一个最大值与其同列的比较看其是否为最小值,如果是,则为鞍点
for(j=0;j<t;j++)
{
for(i1=0;i1<N;i1++)
{
if(a[i1][b[j]]<min)
{
c++;
break;
}
}
if(c==0)
{
printf("鞍点a[%d][%d]为:%4d\n",i,b[j],a[i][b[j]]);
}
}
c=0;
t=0;//对t清零
}
}