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

  • 相关阅读:
    十大排序算法
    SQL优化指南
    Python基础-类与对象
    Python基础-函数
    Python基础-字典
    Python基础-字符串
    Python基础-列表
    以太坊智能合约开发框架Truffle
    比特币钱包搭建与使用
    矩阵的压缩存储
  • 原文地址:https://www.cnblogs.com/cchun/p/2520108.html
Copyright © 2011-2022 走看看