概念:
在一个给定的整数数组中找到一个连续的子序列,使得子序列的元素之和最大
思路:
-
遍历所有可能的子序列,计算它们的和。
-
在每次计算过程中,记录当前最大的子序列和。
-
返回最大的子序列和作为结果。
代码:
#include <iostream>
#include <climits>
// 计算给定数组的最大连续子序列之和
int maxSubarraySum(int arr[], int n) {
int maxSum = INT_MIN; // 最大和初始化为整型最小值
// 遍历所有可能的子序列
for (int i = 0; i < n; i++) {
int currentSum = 0;
// 内层循环遍历从当前位置 i 到数组末尾的子序列
for (int j = i; j < n; j++) {
currentSum += arr[j]; // 将当前元素添加到当前子序列和中
// 如果当前子序列和大于最大和,则更新最大和
if (currentSum > maxSum) {
maxSum = currentSum;
}
}
}
return maxSum; // 返回最大和
}
int main() {
int arr[] = {-2, -3, 4, -1, -2, 1, 5, -3};
int n = sizeof(arr) / sizeof(arr[0]); // 计算数组大小
// 调用函数计算最大和
int maxSum = maxSubarraySum(arr, n);
// 输出结果
std::cout << "Maximum sum of a subarray: " << maxSum << std::endl;
return 0;
}