c++分治法求最大值代码
时间: 2024-09-20 18:00:21 浏览: 25
在C++中,使用分治法求解数组的最大值也可以通过类似上述的递归方式实现。下面是一个简单的示例代码:
```cpp
#include <iostream>
// 分治法函数,寻找区间内的最大值
int findMax(int arr[], int low, int high) {
// Base case: 当数组只有一个元素时,直接返回该元素
if (low == high)
return arr[low];
// 如果有多个元素,分割数组并分别求解两部分的最大值
int mid = low + (high - low) / 2;
int maxLeft = findMax(arr, low, mid); // 左半部分的最大值
int maxRight = findMax(arr, mid + 1, high); // 右半部分的最大值
// 返回整个数组的最大值,即左右两边的最大值
return std::max(maxLeft, maxRight);
}
int main() {
int arr[] = {5, 2, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int maxVal = findMax(arr, 0, n - 1);
std::cout << "The maximum value in the array is: " << maxVal << std::endl;
return 0;
}
```
在这个例子中,`main`函数初始化了一个数组,然后调用`findMax`函数来计算最大值,并打印结果。