推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

动态规划的经典问题:最大子数组与最大子矩阵.docx

资料介绍

动态规划的经典问题:最大子数组与最大子矩阵

一、最大子数组(Kadane算法)

1.1 问题

求数组中连续子数组的最大和。

arr = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
最大子数组 = [4, -1, 2, 1] = 6

1.2 Kadane算法 O(n)

int maxSubArray(int *nums, int n) {
    int currentMax = nums[0];
    int globalMax = nums[0];
    
    for (int i = 1; i < n; i++) {
        // 要么从当前元素开始新的子数组
        // 要么继续累加之前的子数组
        currentMax = (nums[i] > currentMax + nums[i])
                     ? nums[i] : currentMax + nums[i];
        
        if (currentMax > globalMax) {
            globalMax = currentMax;
        }
    }
    return globalMax;


部分文件列表

文件名 大小
动态规划的经典问题:最大子数组与最大子矩阵.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载