zoukankan      html  css  js  c++  java
  • HDOJ1231 最大连续子序列

    题目大意:求最大连续子序列和,并输出其序列的首元素和尾元素。

    题解:方程非常简单:d[i]=max(0,d[j-1])+a[i],主要是最大连续子序列和的首元素和尾元素怎么记录的问题,其实也非常简单,就是在当我们求以位置i为结束位置的最大连续子序列和的时候,顺便记录下以位置i结束的最大连续子序列和的首元素和尾元素,如果序列的长度为1,则尾元素和首元素都是a[i],如果大于1,则首元素为d[i-1]的首元素,尾元素依然是a[i]。

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define MAXN 10005
    typedef struct
    {
        long x,y;
    }NODE;
    NODE path[MAXN];
    long d[MAXN],a[MAXN];
    int main(void)
    {
        long i,n,maxs,l,r,flag;
        while(scanf("%ld",&n)!=EOF)
        {
            if(n==0) break;
            flag=0;
            for(i=0; i<n; i++)
            {
                scanf("%ld",&a[i]);
                if(a[i]>=0) flag=1;
            }
            if(!flag)
            {
                printf("%d %ld %ld\n",0,a[0],a[n-1]);
                continue;
            }
            memset(d,0,sizeof(d));
            d[0]=a[0];
            maxs=d[0];
            l=a[0];
            r=a[0];
            for(i=1; i<n; i++)
            {
                if(d[i-1]<0)
                {
                    d[i]=a[i];
                    path[i].x=a[i];
                    path[i].y=a[i];
                if(d[i]>maxs)
                {
                    maxs=d[i];
                    l=a[i];
                    r=a[i];
                }
                }
                else
                {
                    d[i]=d[i-1]+a[i];
                    path[i].x=path[i-1].x;
                    path[i].y=a[i];
                    if(d[i]>maxs)
                    {
                        maxs=d[i];
                        l=path[i].x;
                        r=path[i].y;
                    }
                }
    
            }
            printf("%ld %ld %ld\n",maxs,l,r);
    }
        return 0;
    }
    

      

  • 相关阅读:
    phpcms列表页调用 点击量
    详解响应式布局设计
    PHPCMS V9 全站通用日期时间标签
    phpcms v9模板制作常用代码集合(转)
    Oracle 学习之 Select 1
    Oracle 学习之exists
    Hive学习之数据去重
    Hive学习之Union和子查询
    Clojure学习之defmulti
    Clojure学习之比线性箭头操作
  • 原文地址:https://www.cnblogs.com/zjbztianya/p/2997071.html
Copyright © 2011-2022 走看看