hdu 1003 最大连续子序列和

来源:互联网 发布:python 无法调用caffe 编辑:程序博客网 时间:2024/04/30 16:44

题意:求最大连续子序列和
记录初始位置和末位置

#include <stdio.h>#include <string.h>#include <string>#include <algorithm>#include <stack>#include <map>#include <iostream>#define INF 0x3f3f3f3fusing namespace std;int main(){    int t;    scanf("%d",&t);    for(int cas=1;cas<=t;cas++)    {        int n;        scanf("%d",&n);        int a;        int sum=0,ma=-0x3f3f3f3f,en=0,st=0,stt=1;        for(int i=1;i<=n;i++)        {            scanf("%d",&a);            sum+=a;            if(ma<sum)            {                st=stt;//st为最大子序列和的起点,最大值更新,st才更新                ma=sum;                en=i;            }            if(sum<0)            {                sum=0;                stt=i+1;//当前子序列和的起点            }        }        printf("Case %d:\n%d %d %d\n",cas,ma,st,en);        if(cas!=t) puts("");    }}

考虑最大子序列和的起点何时更新
11 -7 -4 -5 5 7 -11
sum 11 4 0 0(-5) 5 12 1
max 11 11 11 11 11 12 12
stt 1 1 4 5 5 5 5
st 1 1 1 1 1 5 5

0 0
原创粉丝点击