最大子列和问题(20)

输入格式:
输入第1行给出正整数 K (<= 100000);第2行给出K个整数,其间以空格分隔。
输出格式:
在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。

输入样例:
6
-2 11 -4 13 -5 -2
输出样例:
20

最大子列和的算法很多,最简单的可以用三重循环来做,不过O(N^3)的时间复杂度。。。

MOOC里陈越姥姥提到的最优算法在线搜索的时间复杂度是O(N)

下面贴出代码

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int *a = (int*)malloc(n*sizeof(int));
    for (int i = 0; i < n; i++){
        cin >> a[i];
    }

    int max = 0,sum=0;
    for (int i = 0; i < n; i++){
        sum += a[i];
        if (sum>max){
            max = sum;
        }
        else if (sum < 0){
            sum = 0;
        }
    }
    cout << max;
}
时间: 2024-11-03 21:06:34

最大子列和问题(20)的相关文章

01-1. 最大子列和问题(20)

01-1. 最大子列和问题(20) 给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.“最大子列和”则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编写程序,计算给定整数序列的最大子列和. 输入格式: 输入第1行给出正整数 K (<= 100000)

01-复杂度1. 最大子列和问题(20)

给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.“最大子列和”则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编写程序,计算给定整数序列的最大子列和. 输入格式: 输入第1行给出正整数 K (<= 100000):第2行给出K个整数,其间以空格分隔

数据结构练习 01-复杂度1. 最大子列和问题(20)

给定K个整数组成的序列{ N1, N2, ..., NK },"连续子列"被定义为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K."最大子列和"则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编写程序,计算给定整数序列的最大子列和. 输入格式: 输入第1行给出正整数 K (<= 10000

最大子列和问题(剑指offer和PAT)

01-复杂度1 最大子列和问题   (20分) 给定KK个整数组成的序列{ N_1N?1??, N_2N?2??, ..., N_KN?K?? },“连续子列”被定义为{ N_iN?i??, N_{i+1}N?i+1??, ..., N_jN?j?? },其中 1 \le i \le j \le K1≤i≤j≤K.“最大子列和”则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编

PAT-最大子列和问题

01-1. 最大子列和问题(20) 时间限制 10000 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 给定K个整数组成的序列{ N1, N2, ..., NK },"连续子列"被定义为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K."最大子列和"则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11

数据结构习题记录(1)——最大子列和问题

题目: 给定KK个整数组成的序列{ N_1N?1??, N_2N?2??, ..., N_KN?K?? },"连续子列"被定义为{ N_iN?i??, N_{i+1}N?i+1??, ..., N_jN?j?? },其中 1 \le i \le j \le K1≤i≤j≤K."最大子列和"则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编写程序,计

2015/10/13 算法习题:最大子列和问题

已经正式开始学习数据结构和算法,先学了网易云课堂上的浙江大学的数据结构课,是陈越和何钦铭上的,了解了什么是数据结构和算法后,学习了一些时间空间复杂度分析的技巧,结合之前马虎掌握的学习,先从简单的题目入手学习. 题目是这样的: 给定了一个n个整数组成的序列,求它各个子列中,子列和最大的值. 输入:输入n个整数组成的序列 要求输出最大子列和. 示例: 输入: -2 11 -4 13 -5 -2 输出: 20 做出这题的难度不是很大,至少很容易可以做到暴力求解,然而暴力求解的时间复杂度是很大的. 我用

01-复杂度1. 最大子列和问题

给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.“最大子列和”则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编写程序,计算给定整数序列的最大子列和. 输入格式: 输入第1行给出正整数 K (<= 100000):第2行给出K个整数,其间以空格分隔

复杂度_最大子列和问题(1)

给定K个整数组成的序列{ N1??, N2??, ..., NK},"连续子列"被定义为{ Ni??, Ni+1??, ..., Nj},其中 1≤i≤j≤K."最大子列和"则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编写程序,计算给定整数序列的最大子列和. 本题旨在测试各种不同的算法在各种数据情况下的表现.各组测试数据特点如下: 数据1:与样