通过c语言找出一个二维数组的鞍点即该位置上的元素在该行上最大在该列上最小。也可能没有鞍点。
以下是一个示例代码,实现了找出二维数组中的鞍点:
#include <stdio.h>
#define ROWS 3
#define COLS 3
int main() {
int arr[ROWS][COLS] = {
{3, 7, 9},
{2, 6, 8},
{5, 1, 4}
};
int i, j, k, max, min, saddle = 0;
for (i = 0; i < ROWS; i++) {
max = arr[i][0];
k = 0;
for (j = 1; j < COLS; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
k = j;
}
}
min = arr[0][k];
for (j = 1; j < ROWS; j++) {
if (arr[j][k] < min) {
min = arr[j][k];
}
}
if (max == min) {
printf("Saddle point found at (%d, %d): %d\n", i, k, max);
saddle = 1;
}
}
if (!saddle) {
printf("No saddle point found.\n");
}
return 0;
}
该代码首先定义了一个3x3的二维数组,并遍历每一行。对于每一行,它找出该行中的最大值,以及该最大值在该行中的列数。接着,它遍历该列,找出该列中的最小值。如果该最小值恰好等于该行中的最大值,则说明该位置是一个鞍点,输出该位置的坐标和值。如果遍历完整个二维数组都没有找到鞍点,则输出提示信息
原文地址: https://www.cveoy.top/t/topic/fRuq 著作权归作者所有。请勿转载和采集!