使用C++实现给定由n个整数组成的数组{a1, a2, a3, ..., an},编写函数,用穷举法求该数组形如的子数组和的最大值,当所有整数均为负整数时,定义其子数组和的最大值为0。求数组{-2, 11, -4, 13, -5, -2, 10,-4,-5 }的子数组和的最大值。
时间: 2024-10-10 11:12:53 浏览: 44
delete--number.rar_K._delete namber_delete number_给定n位正整数
5星 · 资源好评率100%
在C++中,你可以通过遍历数组并动态维护一个当前子数组和的最大值来实现这个功能。这里是一个简单的算法:
```cpp
#include <vector>
#include <climits>
int maxSubArraySum(const std::vector<int>& nums) {
int max_sum = INT_MIN; // 初始化最大和为负无穷大
int current_sum = 0; // 当前子数组和
for (int num : nums) {
current_sum += num;
if (current_sum > max_sum)
max_sum = current_sum; // 如果当前和大于已知最大和,则更新最大和
else if (current_sum < 0) // 如果当前和变为负数,从零开始新的子数组和
current_sum = 0;
}
return max_sum;
}
// 测试示例
std::vector<int> arr = {-2, 11, -4, 13, -5, -2, 10, -4, -5};
int result = maxSubArraySum(arr);
std::cout << "数组{-2, 11, -4, 13, -5, -2, 10, -4, -5}的子数组和的最大值为: " << result << std::endl;
阅读全文