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;
        }
    }

    最大连续子序列

  • 相关阅读:
    使用递归遍历目录
    Isseck 定位文件流
    二:C标准库文件I/O函数
    IPC进程通信
    操作系统知识总结
    Makefile简单使用
    人际交往
    AIX ksh补全命令
    java.lang.IllegalArgumentException: Wildcard string cannot be null or empty.
    WEB项目实现QQ在线推广功能
  • 原文地址:https://www.cnblogs.com/Mr-Xu-JH/p/3853586.html
Copyright © 2011-2022 走看看