zoukankan      html  css  js  c++  java
  • HDU 1231

    求最大连续子序列

    一开始想到的一种O(n^2)的算法,应该会超时

    后来想出了下面的方法

    #include <iostream>
    using namespace std;
    struct DP{
        int sum,sta,end;
        void init(int su,int st,int en){
            sum=su;
            sta=st;
            end=en;
        }
    };
    int a[10000];
    int main()
    {
        int t;
        while(cin>>t){
            if(0==t)break;
            for(int i=0;i<t;i++){
                cin>>a[i];
            }
            DP tem,max;
            tem.init(0,0,0);
            max.init(a[0],0,0);
            for(int i=0;i<t;i++){
                tem.end=i;
                tem.sum+=a[i];
                if(tem.sum>max.sum&&tem.sum>=0){
                    max.init(tem.sum,tem.sta,tem.end);
                }
                if(tem.sum<0){            //当tem.sum<0的时候,直接放弃这一段
                    tem.init(0,i+1,i+1);
                }

            }
            if(max.sum<0)cout<<"0 "<<a[0]<<" "<<a[t-1]<<endl;               //所有的元素都小于0的时候,输出0,a[0],a[t-1];
            else cout<<max.sum<<" "<<a[max.sta]<<" "<<a[max.end]<<endl;
        }
    }

    最大连续子序列

  • 相关阅读:
    RDD(弹性分布式数据集)的分析
    Spark 开发环境搭建
    本地yum仓库的配置安装
    Java使用PDFBox操作PDF文件获取页码、文章内容、缩略图
    利用bdb实现持久化队列
    SQL查询重复记录
    SQL删除某个时间段的数据
    JAVA文件读取和解析
    多线程
    DOC解析xml
  • 原文地址:https://www.cnblogs.com/Mr-Xu-JH/p/3853586.html
Copyright © 2011-2022 走看看