找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小.可能没有鞍点
#include<stdio.h>
#define n 4 //定义行数n
#define m 5 //定义列数m
int main()
{
int arr[n][m];
int i,j,jmax,k;
int flag=1,count=0;
//输入数组元素
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
scanf("%d",&arr[i][j]);
}
}
//判断
for(i=0;i<n;i++){
int max=arr[i][0];
for(j=0;j<m;j++){
if(arr[i][j]>=max){
max=arr[i][j];
jmax=j; //求出第i行最大值max位于第几列,并记录
}
}
flag=1; //默认flag=1,该点为鞍点
for(k=0;k<n;k++){
if(arr[k][jmax]<max){
flag=0;
break; //若第j列中存在比max小的数,则该点不是鞍点,flag=0
}
}
if(flag){
printf("%d %d\n",i,jmax);
count++; //count计算鞍点个数
}
}
if(count==0) printf("None"); //若count=0,无鞍点时输出none
return 0;
}