Max Sum(连续序列最大和)(简单dp)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43984169/article/details/86698114

题目:

在这里插入图片描述

题目大意:

找到一串数字中最大连续元素和,并按规定格式输出。

代码:

#include <iostream>
#include <cstdio>
using namespace std;
int a[1000005];
int main()
{
    int t;
    int i,j;
    scanf("%d",&t);
    for(i=0; i<t; i++)
    {
        int n;
        scanf("%d",&n);
        for(j=1; j<=n; j++)
            scanf("%d",&a[j]);
        printf("Case %d:\n",i+1);
        int num=a[1];
        int max_=a[1];
        int left,right;
        left=right=1;
        int x=1,y=1;
        for(j=2; j<=n; j++)
        {
            if(num<0)
            {
                num=a[j];
                x=j;
            }
            else
                num=num+a[j];
            if(num>max_)
            {
                max_=num;
                left=x;
                right=j;
            }
        }
        printf("%d %d %d\n",max_,left,right);
        if(i<t-1)
            putchar('\n');
    }
    return 0;
}
展开阅读全文

没有更多推荐了,返回首页