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

HDU 1231

时间:2014-07-19 18:04:36      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:style   color   os   io   for   re   

求最大连续子序列

一开始想到的一种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.init(0,i+1,i+1);
            }

        }
        if(max.sum<0)cout<<"0 "<<a[0]<<" "<<a[t-1]<<endl;
        else cout<<max.sum<<" "<<a[max.sta]<<" "<<a[max.end]<<endl;
    }
}

 

最大连续子序列

HDU 1231,布布扣,bubuko.com

HDU 1231

标签:style   color   os   io   for   re   

原文地址:http://www.cnblogs.com/Mr-Xu-JH/p/3853586.html

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