您的位置:首页 > 其它

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

2010-08-03 16:42 330 查看
问题描述:
     有n个数(以下都视为整数),每个数有正有负,现在要在n个数中选取相邻的一段,使其和最大,输出最大的和。
问题分析:
      看到这个问题,它是属于带“最”字的问题,其实就是一个求最优解的问题。最先想到的就是要动态规划。

int MaxSub (int a[])//此为只需要求最大的和,时间复杂度是O(n)
{
int dp
, 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法