zoukankan      html  css  js  c++  java
  • [动态规划] 最大子段和问题

    问题描述:

    给定长度为n的整数序列,a[0...n-1], 求某个子区间[i,j]使得a[i]+…+a[j]和最大.


    空间优化后的动态规划:

    用两个变量sum和ans,sum用来保存当前的子段和,ans用来记录最大的子段和。

    循环遍历,如果当前子段和 > 最大子段和,那么更新最大子段和;如果当前子段和 < 0,那么设置当前子段和 = 0。

     1 int MaxSubsequenceSum(int a[],int n)
     2 {
     3     int sum=0,ans=0;
     4     for(int i=0;i<n;i++){
     5         sum+=a[i];
     6         if(sum<0)
     7             sum=0;
     8         ans=max(sum,ans);
     9     }
    10     return ans;
    11 }

    时间复杂度:O(n)

    正因为是最弱,所以才理解智慧之强
  • 相关阅读:
    java学习的第三天
    java学习的第二天
    java学习的第一天
    兼容性测试2
    兼容性测试
    安全性测试
    界面测试
    功能性测试
    简历小技巧
    day13
  • 原文地址:https://www.cnblogs.com/Yanick/p/11233734.html
Copyright © 2011-2022 走看看