鞍点:该行最大值,同时为列最小值
(这里为3*4矩阵)
#include <stdio.h>
# define N 3
# define M 4
int main(void)
{
int a[N][M];
int i,j;
int flag = 0;//判断标志
printf("输入矩阵:\n");
for(i = 0;i < N;++i)
{
for(j = 0;j < M;++j)
{
scanf("%d",&a[i][j]);
}
}
for(i = 0;i < N;++i)
{
int k = 0;
int max = a[i][0];
for(j = 0;j < M;++j)//求行最大值
{
if(a[i][j] > max)
{
max = a[i][j];
k = j;//记录最大值的列数
}
}
int r;
int min = a[i][k];
for(r = 0;r < N;++r)//求行最大值对应列数的最小值
{
if(a[r][k] < min)
{
min = a[r][k];
}
}
if(max == min)
{
printf("鞍点为:%d行%d列的%d \n",i,k,a[i][k]);
flag = 1;//有鞍点
}
}
if(flag == 0)//遍历完数组没找到鞍点,flag值不变
{
printf("没有鞍点\n");
}
return 0;
}