最大子序列求和算法二 递归求解递归求解:整个求解数组分成三部分,最大子序列可能出现在三个地方,左半部分,右半部分,跨越左右部分(包括左半部分最后一个元素,右半部分第一个元素)分别对这三部分求解,不断的在每部分再分成三部分,递归求解每一次递归跨越部分可以先算出,但是左,右半部分,需要不断递归,知道剩一...
分类:
其他好文 时间:
2014-06-26 20:50:57
阅读次数:
188
maxSubSum分别是最大子序列和的4中java算法实现。
第一种算法运行时间为O(N^3),第二种算法运行时间为O(N^2),第三种算法运行时间为O(nlogn),第四种算法运行时间为线性N
测试
public class Test {
public static void main(String[] args) {
int[] a = {-2, 11, -4, 13, -5, -...
分类:
编程语言 时间:
2014-06-24 18:30:19
阅读次数:
284
问题——
给定N个整数(有可能是负数)A1,A2,A3,A4...An,求最大子序列和。
(子序列必须是连续的);比如,对于输入,-2,11,-4,13,-5,-2;这个序列,
答案是20,即从A2到A4。
对于这个问题,你怎么想的呢?下面有四种解法,看看你的解法是不是其中之一。
解法一、穷举
解题思路——
既然是求某一个连续的子序列的最大和,那么我们把所有的子序列的和都加一遍...
分类:
其他好文 时间:
2014-06-22 08:06:08
阅读次数:
237
动态规划的算法:#includeint MaxSubsequenceSum(const int A[],int n){ int i,sum,MaxSum; sum=MaxSum=0; for(i=0;iMaxSum) MaxSum=sum; if...
分类:
其他好文 时间:
2014-06-18 17:56:31
阅读次数:
139
问题
给定整数: A1,A2,…,An,
求∑jk=iAk 的最大值(为方便起见,如果所有的整数均为负数,则最大子序列和为0)
例如
对于输入:-2,11,-4,13,-5,-2,答案为20,即从A2到A4
分析
这个问题之所以有意思,是因为存在很多求解它的算法。...
分类:
编程语言 时间:
2014-06-08 15:42:23
阅读次数:
265
算法1
用两个for循环定位子序列的上下界,然后再用最内部的一个for循环求出上下界之间的元素和。
时间复杂度:O(N³)。
代码:
int MaxSub(int *a, int n)
{
int sum = 0;
int tmp;
for (int i = 0; i < n; i++)
{
for (int j = i; j <...
分类:
其他好文 时间:
2014-05-25 21:28:44
阅读次数:
243
就拿杭电OJ上的第1003题开始吧,这题比原书要复杂一些。
Problem Description
Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum...
分类:
其他好文 时间:
2014-05-22 07:07:27
阅读次数:
322
这道题,对于我这种英文不好的人来说,有点费劲啊。题目的意思:给你两组成绩,你要找出他们之间最大的公共子序列,不能有重复,然后输出两组数据。第一组就是:按照从大到小输出最大子序列。第二组就是:按照个位数由小到大输出,若个位数一样大,则小的在前输出最大子序列。解题思路基本上已经出来了,就是千万要注意就是...
分类:
其他好文 时间:
2014-05-11 05:13:47
阅读次数:
384