3、找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没鞍点),打印出有关信息。
int a[4][5] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
//给数组元素赋值
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
a[i][j] = arc4random() % 15;
printf("%-3d ", a[i][j]);
}
printf("\n");
}
int count = 0;//用来记录鞍点的个数
//查找鞍点
int max = 0, min = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
max = a[i][j]; //先假设取出来的元素是该行中最大的
BOOL isMax = YES;
//然后在本行中查找,看该数是不是最大值
for (int column = 0; column < 5; column++) {
if (a[i][column] > max) {
isMax = NO;
break;
}
}
if (!isMax) {
continue;
}
min = a[i][j]; //先假设取出来的元素是该列中最小的
BOOL isMin = YES;
//然后在本列中查找,看该数是不是最小值
for (int row = 0; row < 4; row++) {
if (a[row][j] < min) {
isMin = NO;
break;
}
}
if (!isMin) {
continue;
}
count++;
printf("%d 行 %d 列 %d\n", i, j, a[i][j]);
}
}
if (!count) {
printf("没有鞍点");
}
return 0;
}