求二维数组的山顶元素 c语言
时间: 2024-10-29 07:12:15 浏览: 17
在C语言中,求二维数组的“山顶”元素通常意味着找到数组中所有行的最大值,并在这些最大值中返回最大的那个。这可以分为两步:
1. 初始化两个变量,一个是当前行的最大值`row_max`,另一个是整个数组的最大元素`global_max`。假设数组名为`arr`,行数和列数分别为`m`和`n`。
```c
int row_max[m], global_max = arr[0][0];
```
2. 遍历每一行,对于每个位置`(i, j)`,更新行最大值`row_max[i]`:
```c
if (arr[i][j] > row_max[i]) {
row_max[i] = arr[i][j];
}
```
3. 再遍历一遍`row_max`数组,找到全局最大值:
```c
for (int i = 0; i < m; i++) {
if (row_max[i] > global_max) {
global_max = row_max[i];
}
}
```
4. `global_max`就是二维数组的“山顶”元素。
完整的函数示例:
```c
#include <stdio.h>
int find_peak(int arr[][n], int m, int n) {
int row_max[m];
int global_max = arr[0][0];
// 初始化行最大值
for (int i = 0; i < m; i++) {
row_max[i] = arr[i][0];
}
// 更新行最大值和全局最大值
for (int i = 0; i < m; i++) {
for (int j = 1; j < n; j++) {
if (arr[i][j] > row_max[i]) {
row_max[i] = arr[i][j];
}
}
}
// 找到全局最大值
for (int i = 0; i < m; i++) {
if (row_max[i] > global_max) {
global_max = row_max[i];
}
}
return global_max;
}
// 示例用法
int main() {
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int result = find_peak(arr, 3, 4);
printf("山顶元素: %d\n", result);
return 0;
}
```
阅读全文