c++蛮力法最大值连续子序问题

概念:

       在一个给定的整数数组中找到一个连续的子序列,使得子序列的元素之和最大

思路:

  1. 遍历所有可能的子序列,计算它们的和。

  2. 在每次计算过程中,记录当前最大的子序列和。

  3. 返回最大的子序列和作为结果。

代码:

#include 
#include 

// 计算给定数组的最大连续子序列之和
int maxSubarraySum(int arr[], int size) {
    int maxSum = INT_MIN; // 最大和初始化为整型最小值

    // 遍历所有可能的子序列
    for (int i = 0; i < size; i++) {
        int currentSum = 0;
        for (int j = i; j < size; j++) {
            currentSum += arr[j]; // 将当前元素添加到当前子序列和中
            if (currentSum > maxSum) {
                maxSum = currentSum; // 更新最大和
            }
        }
    }

    return maxSum; // 返回最大和
}

int main() {
    int arr[] = {-2, -3, 4, -1, -2, 1, 5, -3};
    int size = sizeof(arr) / sizeof(arr[0]); // 计算数组大小

    int maxSum = maxSubarraySum(arr, size); // 调用函数计算最大和
    std::cout << "Maximum sum of a subarray: " << maxSum << std::endl; // 输出结果

    return 0;
}

你可能感兴趣的:(数据结构与算法,数据结构)