c语言找出二维数组的鞍点
时间: 2024-12-03 21:12:16 浏览: 12
数据结构实验指导书及其答案.doc
在C语言中,查找二维数组的鞍点通常意味着找到数组中的最小值行和最大值列。鞍点是指数组中既是最小元素所在行的最大值,又是最大元素所在列的最小值的那个位置。以下是简单的算法步骤:
1. 初始化两个变量,`minRow`和`maxCol`分别记录当前找到的最小行数和最大列数,以及对应的最小值`minVal`和最大值`maxVal`。
2. 遍历二维数组的所有元素:
a. 如果当前元素值小于`minVal`,更新`minVal`和`minRow`。
b. 如果当前元素值大于`maxVal`,更新`maxVal`和`maxCol`。
3. 检查`minRow`和`maxCol`是否一致,如果不一致,则找到了一个鞍点(即`array[minRow][maxCol]`)。如果一致,说明整个数组没有鞍点。
以下是一个简化版的示例代码片段(假设数组`arr`已经初始化好):
```c
#include <stdio.h>
#define ROWS 5
#define COLS 4
void findAislePoint(int arr[ROWS][COLS], int rows, int cols) {
int minVal = arr[0][0];
int minRow = 0;
int maxCol = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (arr[i][j] < minVal) {
minVal = arr[i][j];
minRow = i;
}
else if (arr[i][j] > maxVal && arr[i][j] != minVal) { // 忽略等于minVal的情况
maxCol = j;
}
}
}
if (minRow != maxCol) {
printf("鞍点坐标: (%d, %d), 鞍点值: %d\n", minRow, maxCol, arr[minRow][maxCol]);
} else {
printf("数组中不存在鞍点.\n");
}
}
int main() {
int arr[ROWS][COLS] = {{1, 5, 9, 3},
{8, 6, 7, 0},
{2, 4, 5, 1},
{1, 7, 8, 9}};
findAislePoint(arr, ROWS, COLS);
return 0;
}
```
阅读全文