云计算百科
云计算领域专业知识百科平台

【动态规划】连续子数组的最大和

在这里插入图片描述

求解代码

public int FindGreatestSumOfSubArray(int[] array) {
int sum = 0;
int max = array[0];
for(int i=0;i<array.length;i++){
sum= Math.max(array[i],sum+array[i]);

max=Math.max(max, sum);
}

return max;
}

小贴士

这题和前文【动态规划】最长上升子序列(一)有些类似,不同的是本题是连续子数组,常规思路的话我们需要利用dp,dp[i] 代表示以元素 array[i] 为结尾的连续子数组最大和。

不难想到,状态转移方程: dp[i] = Math.max(dp[i-1]+array[i], array[i])

这里我们为了进一步简化动态规划,使用一个变量sum来表示当前连续的子数组和。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【动态规划】连续子数组的最大和
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!