C语言 | 找出一个二维数组中的鞍点二维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。分析:一个有N行M列的二维数组,会有N个行的最大元素,M个列的最小元素,当行的最大(1<=N<=6)
#include<stdio.h>
#define N 6
int main(){
int a[N][N];
int temp[N];//存放比较得到的较大的数
int temp1[N];
int i,j,k,n,count=0;
printf(“Input the n(1-6): “);
scanf(“%d”,&n);
printf(“Input the square: “);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf(“%d”,&a[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf(“%d\t”,a[i][j]);
if((j+1)%n==0)printf(“\n”);
}
}/*打印出该二维数组表*/
/*判断每一行的最大值*/
for(i=0;i<n;i++){ /*i行不变,先变列*/
temp[i]=a[i][0];
for(j=0;j<n;j++){
if(temp[i]<a[i][j])temp[i]=a[i][j];
}
}
for(i=0;i<n;i++){ /*判断列的最小值*/
temp1[i]=a[0][i];
for(j=0;j<n;j++){
if(temp1[i]>a[j][i])temp1[i]=a[j][i];
}
}
/*判断是否有鞍点*/
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(temp[i]==temp1[j]){ //*第i行的元素与第j列的元素相同,代表同一个数
printf(“The point is %d”,a[i][j]);
count=1;
}
}
}
if(count==0)printf(“No!”);
return 0;
}