找矩阵中的鞍点
Description
由键盘输入一个3*4(3行4列)的矩阵,输出矩阵中的鞍点(即在矩阵行中最大,列中最小的数)。
若没有鞍点,输出“NO”字样。
输入样例
87 90 110 98
70 97 210 65
98 45 120 30
输出样例
110
#include <stdio.h>
#include <stdlib.h>
#define ROW 3
#define COL 4
int main()
{
int matrix[ROW][COL];
int i, j, k, rowMax, rowMaxColIndex, haveAnswer=0;
for(i=0;i<ROW;i++){
for(j=0;j<COL;j++){
scanf("%d", &matrix[i][j]);
}
}
for(i=0;i<ROW;i++){ //遍历每行
rowMax = matrix[i][0];
rowMaxColIndex = 0; //将当前行的第一个元素作为擂主
for(j=1;j<COL;j++){
if(matrix[i][j] > rowMax){
rowMax = matrix[i][j];
rowMaxColIndex = j; //找到当前行最大值
}
}
for(k=0;k<ROW;k++){ //遍历对应列的每一行
//但凡列中出现比它小的,即它不是列中最小的,退出循环
if(matrix[k][rowMaxColIndex] < rowMax) break;
}
//如果遍历到最后的没有退出循环,即它是鞍点
if(k==ROW){haveAnswer=1; printf("%d\n", matrix[i][rowMaxColIndex]);}
}
if(!haveAnswer) printf("NO");
return 0;
}
网友评论