码迷,mamicode.com
首页 > 编程语言 > 详细

16-求连续数组和最大

时间:2017-08-26 04:43:29      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:依次   ret   长度   ...   nbsp   iostream   输入   最大   整数   

/* 题目内容:

给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4].

输入描述

第一行为一个整数n,表示数组有n个数据,第二行依次输入n个整数

输出描述

计算出n个整数中连续k个数的最大和

输入样例

5
1 2 3 4 5

7
6 -5 5 8 -13 5 7
输出样例

15
14
*/

#include <iostream>
using namespace std;
int a[10000];
int f[10000];

int main(){
    int n;
    cin >> n;
    for(int i = 0; i < n; i++)
        cin >> a[i];
    f[0] = a[0];
    int max = a[0];
    for(int i = 1; i < n; i++){
        if(f[i - 1] > 0)
            f[i] = f[i - 1] + a[i];
        else
            f[i] = a[i];
        if(max < f[i])
            max = f[i];
    }
    cout << max ;
    return 0;
}

16-求连续数组和最大

标签:依次   ret   长度   ...   nbsp   iostream   输入   最大   整数   

原文地址:http://www.cnblogs.com/zhumengdexiaobai/p/7429741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!