int a[3][4] = {0};
//计数器
int count = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
a[i][j] = arc4random() % (30 - 10 + 1) + 10;
printf("%d ", a[i][j]);
}
printf("\n");
}
//判断鞍点操作如下
//因为我们不知道数组中哪个数是鞍点,有可能每个都是,所以只有将每个元素都拿出来进行判断
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
//假设当前取出的元素就是该行最大的元素
int max = a[i][j];
//记录是否是该行最大值
BOOL isMax = YES;
for (int column = 0; column < 4; column++) {
//如果比较过程中有一个数比假设的数大,说明该数不是该行的最大值,如果不是最大值中断循环
if (a[i][column] > max) {
isMax = NO;
//如果不是最大值中断循环
break;
}
}
if (isMax == NO) {
continue;
}
//假设该数是该列的最小值
//假设代码能走到这一行,说明该数已经是这一行的最大值,只需判断该数是否是该列的最小值
int min = a[i][j];
//记录该数是否是该列的最小值
BOOL isMin = YES;
for (int row = 0; row < 3; row++) {
//如果比较中发现比较的某个数比我们假设的最小值还要小,假设不成立
if (a[row][j] < min) {
//说明该数不是该列的最小值
isMin = NO;
}
}
if (isMin == NO) {
continue;
}
count++;
//代码能走到这一行,说明是该数就是鞍点
printf("第%d行,第%d列是鞍点\n", i + 1, j + 1);
}
}
if (count == 0) {
printf("没有鞍点");
}