【数据结构与算法分析】2.4 求最大子序列和

原创 2015年11月19日 22:35:07

问题描述:

给出指定整数序列,求出最大的子序列和

解决思路:

方法一从i到j进行扫描,复杂度为O(N3);

方法二每次两重循环,复杂度为O(N2);

方法三循环一次,复杂度为O(N3),但是对输入所有数据为负数时是不成立的;

算法实现:

#include<stdio.h>
int MaxSeqSumOfN3(int a[],int n);
int MaxSeqSumOfN2(int a[],int n);
int MaxSeqSumOfN(int a[],int n);
int main() {
    int a[100] = {0};
    int n;
    while(scanf("%d",&n)!=EOF){
        int i ;
        for(i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        printf("%d\n",MaxSeqSumOfN3(a,n));
        printf("%d\n",MaxSeqSumOfN2(a,n));
        printf("%d\n",MaxSeqSumOfN(a,n));
    }
}
//求a[i]到a[j]之间的最大值
int MaxSeqSumOfN3(int a[],int n) {
    int i,j,k;
    int MaxSum = 0;
    for(i=0;i<n;i++){
        for(j=i;j<n;j++){
            int ThisSum = 0;
            for(k=i;k<=j;k++){
                ThisSum += a[k];
            }
            if(ThisSum>MaxSum)
                MaxSum = ThisSum;
        }
    }
     return MaxSum;
}
int MaxSeqSumOfN2(int a[],int n) {
    int i,j;
    int MaxSum = 0;
    for(i=0;i<n;i++){
        int  ThisSum = 0;
        for(j=i;j<n;j++){
            ThisSum += a[j];
            if(ThisSum>MaxSum)
                MaxSum = ThisSum;
        }
    }
     return MaxSum;
}
int MaxSeqSumOfN(int a[],int n) {
    int i;
    int ThisSum = 0;
    int MaxSum = 0;
    for (i = 0; i < n; i++) {
        ThisSum +=a[i];
        if(ThisSum > 0){
              if(ThisSum > MaxSum)
                MaxSum = ThisSum;
        }else{
            ThisSum = 0;
        }
    }
    return MaxSum;
}


【数据结构和算法分析】最大子序列求和问题及联机算法

最大子序列求和问题
  • huyuanjava
  • huyuanjava
  • 2014年07月26日 13:00
  • 985

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

根据《数据结构与算法分析——C语言描述》中的“最大子序列和”问题来看如何分析算法。...
  • longli6438
  • longli6438
  • 2015年02月01日 21:04
  • 947

《数据结构与算法分析C++描述》Mark.Allen.Weiss.pdf

下载地址:网盘下载 内容简介 编辑 此书是作者1996年出版“Algorithm,Data Structures,and Problem Solving with...
  • cf406061841
  • cf406061841
  • 2017年05月27日 19:17
  • 1028

数据结构与算法分析:C语言描述(pdf+源码+答案)

书    名:数据结构与算法分析:C语言描述                   作    者:Mark Allen Weiss (维斯)                    ISBN   :978...
  • Tracyhuixingfu
  • Tracyhuixingfu
  • 2014年11月28日 19:21
  • 2236

【java版】数据结构与算法分析学习之路【一】前言

一.数据结构和算法概述?【框范围】 基础数据结构主要包括表【数组+链表】、栈、队列【散列表】、树、图、堆。高级数据结构包括伸展树、红黑树、确定性跳跃表、AA树、treap树、k-d树、配对堆...
  • shengmingqijiquan
  • shengmingqijiquan
  • 2016年09月22日 09:48
  • 1376

数据结构与算法分析 c++描述 读书笔记(1)

开卷有益,多多益善。由于过年期间学习了下python,再加上之后又在看图像处理和机器学习的东西,c++几乎荒废了,所以抽空就拜读下这本经典的书。网上找的书皮: 把博客当读书笔记了,不然曾经写的好几本的...
  • y277an
  • y277an
  • 2016年04月28日 19:33
  • 449

数据结构与算法分析经典高清珍藏版

数据结构与算法分析经典高清珍藏版 http://download.csdn.net/detail/oyy_ou/5071561
  • wangfei0904306
  • wangfei0904306
  • 2017年02月15日 20:06
  • 221

《数据结构与算法分析》学习笔记

A Practical Introduction to Data Structures and Algorithm Analysis (C++ Edition).
  • u011076940
  • u011076940
  • 2016年08月27日 21:04
  • 4794

浅谈数据结构与算法分析学习及如何进行算法分析

前言都说数据结构与算法分析是程序员的内功,想要理解计算机世界就不能不懂点数据结构与算法,然而这也备受争议,因为大多数的业务需求都用不上数据结构与算法,又或者说已经有封装好的库可以直接调用,例如Java...
  • github_37022917
  • github_37022917
  • 2017年01月26日 21:54
  • 1774

《数据结构与算法分析java语言描述》学习笔记一

第一章 引论 一、概述本书讨论内容        一般情况下,写出一个可以正常工作的程序远远不够;在大量数据输入的情况下,程序能否在合理的时间内运行停止并输出正确的答案是一个重要的问题;所以本书首先会...
  • maq2ian0gqi1ang2
  • maq2ian0gqi1ang2
  • 2016年08月28日 19:02
  • 1798
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【数据结构与算法分析】2.4 求最大子序列和
举报原因:
原因补充:

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