思路:定义两个数组分别存储每行最大值和每列最小值,找出重合的值即可
/*
时间:2020/08/16
目的:找出二维数组的鞍点
功能:对于二维数组的一些操作
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 3
void sort(int(*)[3]);
int main()
{
int a[N][N];
sort(a);
}
void sort(int(*a)[3]){
int i,j,t,count=0;
int max[N],min[N];
srand(time(0));
for(i=0;i<N;i++){
for(j=0;j<N;j++){
a[i][j]=rand()%99+1;
printf("%5d",a[i][j]);
}
printf("\n");
}
for(i=0;i<N;i++){
for(j=0,t=a[i][j];j<N-1;j++){
//在括号内给t赋初值,后续操作中就不会因为j的改变引起t的改变
if(t>a[i][j+1])
t=t;//t的值保持不变
else
t=a[i][j+1];
}
max[i]=t;
}
for(j=0;j<N;j++){
for(i=0,t=a[i][j];i<N-1;i++){
if(t<a[i+1][j])
t=t;
else
t=a[i+1][j];
}
min[j]=t;
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
if(max[i]==min[j]){
printf("\n鞍点是:%5d",max[i]);
count++;
}
}
}
if(count==0)
printf("\n没有鞍点");
}