计算数组中连续元素相加后最大的值是多少? 描述 一个有N个整数元素的一维数组,这个数组有很连续多的子数组,那么这些子数组中和最大值是多少?用自己熟悉的语言实现计算,只要打印出子数组求和的最大值 语言:c++ class Solution { public: int maxSubArray(std::vector<int>& nums) {
时间: 2024-04-21 12:24:27 浏览: 260
C语言求连续最大子数组和的方法
5星 · 资源好评率100%
您可以使用动态规划的方法来解决这个问题。下面是一个使用C++语言实现的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
class Solution {
public:
int maxSubArray(std::vector<int>& nums) {
int maxSum = nums[0]; // 初始化最大和为第一个元素
int currentSum = nums[0]; // 初始化当前和为第一个元素
for (int i = 1; i < nums.size(); i++) {
currentSum = std::max(nums[i], currentSum + nums[i]); // 当前和为当前元素或当前和加上当前元素的较大值
maxSum = std::max(maxSum, currentSum); // 更新最大和
}
return maxSum;
}
};
int main() {
std::vector<int> nums = { -2, 1, -3, 4, -1, 2, 1, -5, 4 }; // 示例输入数组
Solution solution;
int maxSum = solution.maxSubArray(nums); // 计算子数组求和的最大值
std::cout << "The maximum sum of subarray is: " << maxSum << std::endl;
return 0;
}
```
在上述代码中,我们使用 `maxSum` 变量来记录子数组求和的最大值,使用 `currentSum` 变量来记录当前连续子数组的和。我们遍历数组,对于每个元素,更新 `currentSum` 为当前元素或当前和加上当前元素的较大值,并更新 `maxSum` 为当前最大和。最后输出 `maxSum` 即为子数组求和的最大值。
以上代码的输出结果为:
```
The maximum sum of subarray is: 6
```
这意味着数组中连续元素相加后的最大和为 6。
阅读全文