package com.shuobaotang.interview;
/**
* 求出最大子序列的值
* 如果输入为:{-2,11,-4,13,-5,2}
* 那么答案是20
* @author yangjianzhou
*
*/
public class Problem3 {
public static void main(String[] args) {
Problem3 p = new Problem3();
int[] a = {-2,11,-4,13,-5,2};
System.out.println(p.maxmunSubsequenceSum(a));
}
public int maxmunSubsequenceSum(int [] a){
int maxSum =0;
int thisSum = 0;
int seqEnd;
int seqStart;
for(int i=0,j=0;j<a.length;j++){
thisSum =thisSum+a[j];
if(thisSum>maxSum){
maxSum = thisSum;
seqStart =i;
seqEnd =j;
}else if(thisSum<0){
i = j+1;
thisSum =0;
}
}
return maxSum;
}
}
运行结果:
20
分享到:
相关推荐
java-string-similarity, 各种字符串相似性和距离算法 java-string-similarity 实现不同字符串相似度和距离... 目前已经实现了许多算法( 包括Levenshtein编辑距离和 sibblings,jaro winkler,最长公共子序列,余弦相
4. **动态规划**:解决最优化问题,如背包问题、最长公共子序列、最小编辑距离等。 5. **贪心算法**:解决局部最优解能导致全局最优解的问题,如霍夫曼编码、Prim算法等。 6. **图算法**:Dijkstra最短路径算法、...
书中通过背包问题、最长公共子序列、最小编辑距离等问题,深入讲解了动态规划的思想和步骤。 6. **图算法**:包括深度优先搜索(DFS)和广度优先搜索(BFS),以及最短路径算法(Dijkstra、Floyd-Warshall、Bellman...
java算法分析与设计之最长公共子序列问题源代码 算法作为计算机专业学生的必修课,同时也是软件开发过程中必备的编程思想,对学习研究计算机专业意义重大;正因为这门课程难,所以除了相关方面的书籍,网络资源少的...
- **动态规划**:解决最优化问题,如背包问题、最长公共子序列等。 - **贪心算法**:每一步都采取局部最优解,如Prim算法和Kruskal算法用于最小生成树问题。 - **回溯法**:用于解决问题的解空间树,如八皇后问题...
总的来说,Java求最大子列问题的核心在于利用动态规划策略,通过Kadane's Algorithm高效地找到数组中的最大子序列和。这个过程不仅锻炼了我们的逻辑思维能力,也让我们更深入地理解了动态规划的原理。
Java算法全卷涵盖了基本算法和图算法,是学习和提升编程技能的重要资源。这份资料主要针对使用Java语言进行算法实现的开发者,适用于那些对ANT、EJB、J2EE、JAVA和SPRING等技术栈有了解或兴趣的人群。下面我们将深入...
可能包括但不限于排序算法(如快速排序、归并排序、堆排序)、查找算法(二分查找、哈希表查找)、图算法(Dijkstra算法、Floyd算法、拓扑排序)、动态规划问题(如背包问题、最长公共子序列)、字符串匹配算法(KMP...
线性动态规划的常见应用场景包括但不限于:背包问题、最长公共子序列、最长递增子序列、编辑距离、最小路径覆盖等。例如,在最长递增子序列问题中,目标是找到一个序列中的最长子序列,使得子序列中的每个元素都比前...
给一个数组,返回它的最大连续子序列的和使用动态规划F(i):以array[i]为末尾元素的子数组的和的最大值,子数组的元素的相对位置不变res:所有子数组的和的
Java算法设计涵盖了许多核心编程概念,是解决复杂问题的关键工具。这个压缩包文件包含了各种算法的实现,让我们逐一探讨它们。 1. **排序算法**:排序是数据处理的基础,这里可能包括了各种经典排序算法,如快速...
3. **动态规划**:解决具有重叠子问题和最优子结构的问题,如背包问题、最长公共子序列问题等。 4. **贪心算法**:在每个步骤中都做出局部最优选择,试图达到全局最优解,适用于某些特定问题,如最小生成树、...
各种字符串相似度和距离算法的实现:Levenshtein,Jaro-winkler,n-Gram,Q-Gram,Jaccard索引,最长公共子序列编辑距离,余弦相似度......
- 最长公共子序列(LCS):寻找两个序列间的最长相同子序列,常用于比较文本相似性。 - 矩阵链乘法:通过动态规划优化矩阵乘法的计算顺序,降低运算复杂度。 5. 树结构算法 - 二叉查找树:左子节点小于父节点,...
- 最长公共子序列(LCS):寻找两个序列的最长相同子序列。 - 矩阵链乘法:通过动态规划优化矩阵相乘的时间复杂度。 5. **回溯法**: - 八皇后问题:在棋盘上放置八颗皇后,使其互不攻击。 - N皇后问题:在N×N...
Java算法大全源码包是一个集合,包含了众多使用Java语言实现的算法示例代码。这个压缩包为学习和理解计算机科学中的各种算法提供了宝贵的资源。在Java编程中,掌握算法是提升编程技能和解决复杂问题的关键。下面将...
归并排序是一种分治思想的排序算法,其基本思想是将待排序的数组分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的数组。这种算法的时间复杂度为O(n log n),空间复杂度为O(n)。 在Java中,...
JAVA经典算法面试39题及答案 本资源总结了39道经典的 JAVA 算法面试题目,每个题目都附带答案,涵盖了常见的算法问题,旨在帮助读者更好地掌握 JAVA 编程语言和算法设计。 算法概述 算法是计算机科学中最重要的...
"java-classical-algorithm.zip_40_Java编程题_java算法"这个压缩包显然是一份集合了40个Java编程算法题目的资源,旨在帮助学习者深入理解和实践Java中的算法应用。下面,我们将详细探讨这些算法题目可能涵盖的知识...
Java算法大全涵盖了编程中最核心、最实用的算法,这些算法是每位Java开发者应当掌握的基础技能。这个压缩包包含了近100种不同的算法实现,旨在帮助开发者提升编程能力,理解和解决实际问题。以下是对其中一些关键...