【问题描述】输入一个4×4的矩阵中的所有元素,设其最多只有一个鞍点,寻找该鞍点,如果有,则输出其下标及对应的值,若没有,则输出"NO"。鞍点是指二维数组中的一个元素,在该行上最大,在该列上最小。
【输入形式】输入16个整数,存放在一个4×4的二维数组中
【输出形式】若有鞍点,则输出其下标(两个整数)和对应的值,若无鞍点,则输出"NO"。
【样例输入】
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
【样例输出】
[2][1] 6
#include <stdio.h>
int main() {
int row = 0,maxscol = 0,i,j,k,maxsrow = 0;
int maxINRow,minINCol;
int find=0;
int a[4][4];
for (i=0; i<4; i++)
for (j=0; j<4; j++)
scanf("%d",&a[i][j]);
for (i=0; i<4; i++) {
maxINRow=a[i][0]; //先假设每一行第一个数最大,maxINRow存放每行最大的数
for (j=0; j<4; j++) {
if(a[i][j]>maxINRow){
maxINRow=a[i][j];
maxscol=j;
row=i;
}
}
//先假设上一个循环取到的maxINRow所在列的第一个数最大
minINCol=a[0][maxscol];//maxINCcol存放一列最大的数
for (k=0; k<4; k++){
if (a[k][maxscol]<minINCol){
maxsrow=k;
minINCol=a[k][maxscol];
}
}
if(row==maxsrow){ //如果第二次循环取到的列最大的行数与第一次循环的行数相等
printf("[%d][%d] %d",row,maxscol,minINCol);
find=1;
}
}
if (find==0) {
printf("NO");
}
}