求最大连续子段和 的 dp算法

来源:互联网 发布:js获得status code 编辑:程序博客网 时间:2024/05/29 18:14

问题描述:

     有n个数(以下都视为整数),每个数有正有负,现在要在n个数中选取相邻的一段,使其和最大,输出最大的和。

问题分析:

      看到这个问题,它是属于带“最”字的问题,其实就是一个求最优解的问题。最先想到的就是要动态规划。


int MaxSub (int a[])//此为只需要求最大的和,时间复杂度是O(n){    int dp[N], max, i;    max = dp[0] = a[0];    for (i=1; i<N; i++)    {        if (dp[i-1] > 0)            dp[i] = dp[i-1] + a[i];        else            dp[i] = a[i];        if (dp[i] > max)            max = dp[i];    }    return max;}

原创粉丝点击