/*
*
* 求子数组的最大和(数组)
题目:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18
本题目采用动态规划的思想。
求对大子序列必然是一个正序列+序列的情况。当某子序列和为0时,清空临时子序列和,即下面的temp=0;
当前子序列大于max子序列时,max=temp
*/
package cn.edu.cqupt.mircrosoft100;
public class MaxSubsequence {
public static int getMaxSubsequence(int []array)
{
int maxSum=0;
int temp=0;
int maxNum=array[0]; //处理整个数列都是负数的情况
for(int i=0;i<array.length;i++)
{
if(maxNum<array[i])
maxNum=array[i];
temp+=array[i];
if(temp<=0)
temp=0;
if(temp>maxSum)
maxSum=temp;
}
if(maxNum<0)
return maxNum;
return maxSum;
}
public static void main(String args[])
{
int array[]={1,-2,3,10,-4,7,2,-5};
System.out.println(MaxSubsequence.getMaxSubsequence(array));
}
}
分享到:
相关推荐
在编程领域,"求子数组最大和"是一个经典的算法问题,常见于计算机科学的数据结构与算法课程中。这个问题的目标是给定一个整数数组,找出这个数组中的一个连续子数组,使得其元素之和最大。这个问题的一个著名解决...
求子数组的最大和 题目: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -...
"Java实现求子数组和的最大值算法示例" 本文主要介绍了Java实现求子数组和的最大值算法,涉及Java数组遍历、判断、运算等相关操作技巧。下面是对该算法的详细讲解和分析。 首先,需要了解子数组的概念。子数组是...
【标题】:"求子数组最大和的解决方法详解" 【描述】:"本文深入探讨了求解子数组最大和的有效算法,适合需要了解此问题解决方案的人参考" 【标签】:"求子数组的最大和" 在计算机科学中,求子数组最大和是一个...
总结来说,求子数组最大和的问题可以通过动态规划的Kadane算法在O(n)的时间复杂度内解决。实例代码展示了如何实现这个算法,通过比较当前元素与前一个子数组和,找出能够构成更大和的策略,并在遍历过程中保持最大子...
本文实例讲述了PHP实现求连续子数组最大和问题2种解决方法。分享给大家供大家参考,具体如下: 问题描述 求子数组的最大和 题目描述: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一...
3. **求子数组的最大值与最小值**: - 对于每个子数组 `C1` 和 `C2`,分别找出两个最大值和两个最小值。这里可以通过排序子数组来实现。排序后,数组的第一个元素是最小值,最后一个元素是最大值。 4. **合并结果**...
从X{a1,a2,a3,...,an}集合用回溯法按照升序或降序找出和的第一个子集,可设置最大求解时间。
一个程序,很好的。是关于如何用回溯法求子集和的。
3. **求子数组最大和**: 使用Kadane's算法,遍历数组一次,同时维护当前子数组的和与最大子数组的和。如果当前元素比前一个元素大,就累加;否则,重新从当前元素开始计算子数组的和。 4. **二元树找和为特定值的...
数据结构中的串是一种重要的线性数据结构...总之,串的处理是数据结构学习中的一个重要组成部分,理解串的概念、掌握其存储方式以及能够熟练实现串的基本操作,如求子串,对于提升编程能力和解决实际问题具有重要意义。
知识点三: 求子数组的最大和 在这道题中,我们需要计算一个数组中的所有子数组的和,并输出最大值。为了实现这一目标,我们需要对数组进行遍历,并使用合适的算法来计算子数组的和。 知识点四: 在二元树中找出和为...
本资源摘要信息涵盖了各种算法面试题,包括二元查找树、二元树、栈、子数组最大和、二元树路径、最小k个元素、腾讯面试题、链表相交、怪题等多个方面的知识点。 1. 把二元查找树转变成排序的双向链表:本题目考察了...
3. **求子数组最大和** 这是著名的“Kadane's Algorithm”。算法的核心思想是动态规划,通过遍历数组一次,维护当前子数组的最大和以及全局最大和。如果当前元素大于当前子数组的和加上当前元素,那么更新子数组的...
第三道题是求子数组的最大和。这个问题可以采用动态规划的方法解决,创建一个数组b来记录每个位置的子数组最大和。通过从左到右遍历原数组,动态地更新b中的值。最终,通过遍历数组b,可以找到最大的子数组和。 第...
### 求子集C++算法详解 #### 一、问题背景与定义 在计算机科学领域,求子集问题是常见的组合数学问题之一。对于给定的一组元素集合,我们需要找到该集合...希望本文能帮助读者更好地理解和掌握求子集问题的相关知识。
3. 求子数组的最大和 这道题目要求从一个整形数组中找到和最大的子数组。解决这个问题需要使用动态规划算法,先计算每个元素的累加和,然后找到和最大的子数组。 4. 在二元树中找出和为某一值的所有路径 这道题目...
数据结构第四、五章数组、广义表自测卷空题 一、填空题 1. 设S= "A;/document/Mary.doc”,则stden(s)=,aT的字符定位的位置为。 知识点:串的基本概念和操作。在计算机科学中,串是一种基本的数据结构,它是一种...