码迷,mamicode.com
首页 > 其他好文 > 详细

A 最大连续子序列和

时间:2016-03-31 14:33:34      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

 

A 最大连续子序列和

  • 问题描述:
技术分享
  • 思路:只要从1到n扫一遍,不断累加,出现负值就置为0,不断维护最大值即可。
  • 注意:序列全为负数的情况和a,b的选取。
  • 掌握:一般看到题目的数据范围,就可以排除掉一些复杂度明显爆炸的做法。
  • 代码:
  • #include<stdio.h>
    int main() {
    int T;
    scanf("%d",&T);
    for(int i=1;i<=T;i++) {
     
    int n,num,sum=0,maxn=-1100,maxNum=-1100,maxJ=1,a=1,b=1,c=1,flag=0;
    scanf("%d",&n);
    for(int j=1;j<=n;j++) {
    scanf("%d",&num);
     
    sum+=num;
    if(sum>maxn) {
    maxn=sum;
    a=c;
    b=j;
    }
    if(sum<0) {
    sum=0;
    c=j+1;
    }
     
    if(num>maxNum) {
    maxNum=num;
    maxJ=j;
    }
    if(num>=0) {
    flag=1;
    }
    }
    if(!flag) {
    maxn=maxNum;
    a=maxJ;
    b=maxJ;
    }
     
    if(i!=1) {
    printf("\n");
    }
    printf("Case %d:\n%d %d %d\n",i,maxn,a,b);
    }
    return 0;
    }

A 最大连续子序列和

标签:

原文地址:http://www.cnblogs.com/wuyuanyuan/p/5340926.html

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