求最大子序列的算法

原创 2006年06月23日 08:46:00
问题:
给定一个序列,求它的一个连续子序列,使其值在所有子序列中最大,每个元素可以为负数。
    
分析:
用归纳法,当我们知道了(X1 X2… Xi-1)的最大序列后,那么加入Xi后会需要考虑两种情况:第一,原来的最大值不受影响;第二,包括Xi的后缀序列成了最大值,因此我们在遍历的过程中,需要保留这两个最大值。
                           
#include <stdio.h>
#include <stdlib.h>
     
double find_subserial(double x[],int n)
{
    double global_max = 0;                   //save the global max value
    double suffix_max = 0;                     //save the suffix max value
    int i;
    for(i=0;i<n;i++)
    {
        if( suffix_max + x[i] > global_max)
        {
            global_max = suffix_max = suffix_max + x[i];
        }
        else if( suffix_max + x[i] > 0 )
        {
            suffix_max = suffix_max+x[i];
        }
        else
        {
            suffix_max = 0;
        }
    }
    return global_max;
}
    
int main(int argc,char * argv[])
{
    double * temp;
    int i;
    temp = (double *)malloc( (argc-1) * sizeof(double) );
    for(i=1;i<argc;i++)
    {
        temp[i-1] = atof(argv[i]);
        printf("%g ",temp[i-1]);
    }
    printf("/n");
    printf("The max is %g /n",find_subserial(temp,argc-1));
    return 0;
}

求整数序列的最大子序列和

面试被问到这个题,第一反应是用动态规划,结果没规划出来。。算了,不题...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

C 最大子序列算法

  • 2015年03月14日 17:46
  • 2KB
  • 下载

求最大子序列和的四种经典方法及其算法时间复杂度分析

本文程序介绍求最大子序列和的四种经典方法: //四种算法 //算法一 //算法4 int MaxSubsequenceSum4(const int A[], int N) {     int This...

最大子序列和问题四种算法源代码

  • 2017年03月10日 10:04
  • 1.64MB
  • 下载

算法复习------求数组的最大子序列

问题描述: 一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3  输入描述: 输入为两行。 第一行一个整数n(1 ...

求最大子序列和问题(读《数据结构与算法分析——C语言描述》有感)

根据《数据结构与算法分析——C语言描述》中的“最大子序列和”问题来看如何分析算法。...

经典算法--求最大子序列和

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yaoxy/archive/2009/06/23/4289254.aspx 比较经典的算法问题,能够很好的体现动态...

求最大子序列和--体会算法的魅力

算法,即我们解决问题的策略。优秀的算法可以简化复杂的问题,大大减少计算机运行的时间。 以求最大子序列和为例初步体会算法的威力。 给定一个数值数组啊a[10]={ 3, -1, 5, -3, 2, ...

算法之路(一)----求最大子序列

算法在用户量比较少,或者计算量比较小的时候,影响确实不大,但是到达一定数量级的时候,算法的优劣就会极大的影响程序的顺畅程度。优秀的算法甚至能给人amazing的感觉。 今天记录《数据结构与算法分析--...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求最大子序列的算法
举报原因:
原因补充:

(最多只允许输入30个字)