c语言用二维数组求山顶元素
时间: 2024-12-10 16:55:10 浏览: 9
在C语言中,如果你有一个二维数组表示一个山形图(也称为山脉),其中每一行代表一个高度值,你可以通过遍历数组并跟踪两个方向的高度差来找到山顶元素。这里是一个简单的算法:
```c
#include <stdio.h>
// 定义一个函数来找出山顶元素
int find_peak(int arr[][N], int rows) {
// 初始化最高点高度和位置为第一行的第一个元素
int max_height = arr[0][0];
int peak_row = 0, peak_col = 0;
// 遍历数组,检查每个元素是否比其周围元素高
for (int i = 1; i < rows; ++i) {
for (int j = 1; j < N; ++j) {
if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j + 1]) {
// 如果当前元素是最高点,则更新最大高度和位置
if (arr[i][j] > max_height) {
max_height = arr[i][j];
peak_row = i;
peak_col = j;
}
}
}
}
return max_height, peak_row, peak_col; // 返回最高点的值及其位置
}
int main() {
int arr[N][N]; // 假设N是你的一维数组大小
// 填充数组...
int rows = sizeof(arr) / sizeof(arr[0]);
int result[3]; // 结果数组存储最高点值、行数和列数
result = find_peak(arr, rows);
printf("山顶元素值: %d\n", result[0]);
printf("山顶元素所在的行: %d\n", result[1]);
printf("山顶元素所在的列: %d\n", result[2]);
return 0;
}
```
在这个例子中,`find_peak`函数会返回一个数组,包含山顶元素的最大值以及它的行和列索引。请注意,你需要先填充二维数组 `arr` 并设置适当的 `N`。
阅读全文