您的位置:首页 > 其它

题目1372:最大子向量和(连续子数组的最大和)

2017-04-23 13:58 351 查看

#include <cstdio>
 
const int maxn = 100005;
int a[maxn];
 
int main()
{
    int n;
    int l1, r1, l2, r2;
    int ans, temp;
    while(scanf("%d", &n), n)
    {
        for(int i = 0; i < n; i++)
            scanf("%d", &a[i]);
 
        ans = a[0], temp = 0;
        l1 = 0, r1 = 0, l2 = 0, r2 = 0;
        bool flag = false;
 
        for(int i = 0; i < n; i++)
        {
            flag = false;
            temp += a[i];
            if(temp < 0)
                flag = true;
            else
                r2 = i;
            if(temp > ans)
            {
                l1 = l2;
                r1 = r2;
                ans = temp;
            }
            if(flag)
            {
                temp = 0;
                l2 = r2 = i + 1;
            }
        }
 
        printf("%d %d %d\n", ans, l1, r1);
    }
    return 0;
}
 
/*
3
-2 -1 -5
*/
 
/**************************************************************
    Problem: 1372
    User: cust123
    Language: C++
    Result: Accepted
    Time:430 ms
    Memory:1412 kb
****************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐