C6-1 最大子数组和

来源:互联网 发布:mac电磁阀型号 编辑:程序博客网 时间:2024/06/04 20:37

题目描述

给定一个数组a[0,…,n-1],求其最大子数组(长度>=1)和

输入描述

第一行一个整数n(1<=n<=5000),然后依次输入n个整数(每个整数范围[-5000, 5000])

输出描述

输出一个整数表示最大子数组和


样例输入

5
1 -1 1 1 -1

样例输出

2


动态内存分配,数组
效率还行,能过选做题。

#include "stdafx.h"#include <iostream>using namespace std; int MaxSum(int a[],int size){        int sum = 0;        int count = sum;        for (int i = 0; i < size; i++)        {            count = count + a[i];            if (count > sum)                sum = count;            if (count < 0)                count = 0;        }        //考虑下全为负的情况        if (sum == 0)        {            sum = a[0];            for (int i = 0; i<size; i++)            {                if (sum < a[i])                    sum = a[i];            }        }    return sum;}int main(){    int n=0;    cin >> n;    int *p;    p = new int[n];    for(int i=0;i<n;i++)    {        cin >> p[i];    }    //调试语句,请忽略    /*for(int i=0;i<n;i++)    {        cout << p[i] ;    }*/    int sum=0;    sum = MaxSum(p, n);    cout << sum;    delete[]p;    return 0;}
0 0