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

    状态方程:sum[i]=max(sum[i-1]+a[i],a[i]);

    找出动态转移方程就可以直接ac掉了.

     

    #include<iostream> 
    using namespace std; 
    int main(void

        int n,i,flag,num[10000],temp,start,end; 
        int sum,max; 
        while(cin>>n,n) 
        { 
            flag=0
            for(i=0;i<n;i++) 
            { 
                cin>>num[i]; 
                if(num[i]>=0
                { 
                    flag=1
                } 
            } 
            if(flag==0)     
            { 
                cout<<'0'<<" "<<num[0]<<" "<<num[n-1]<<endl; 
                continue
            } 
            start=0
            temp=0
            for(i=0,max=-1,sum=0;i<n;i++) 
            { 
                sum+=num[i]; 
                if(sum>max) 
                { 
                    start=temp; 
                    end=i; 
                    max=sum; 
                } 
                if(sum<0
                { 
                    sum=0
                    temp=i+1
                } 
            } 
            cout<<max<<" "<<num[start]<<" "<<num[end]<<endl; 
        } 
        return 0

  • 相关阅读:
    zencart_magiczoom
    如何把一个TXT文本文件按行数分割成多个文本文件
    工作时常用东西汇总
    asp Vernum
    sitemap制作
    php后门屌炸天
    威盾解密
    软路由
    企业安全工作要点
    内网ARP攻击
  • 原文地址:https://www.cnblogs.com/cchun/p/2520108.html
Copyright © 2011-2022 走看看