• 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

  • 相关阅读:
    Redis 服务端程序实现原理
    Redis 中的客户端
    Redis 中的数据持久化策略(AOF)
    Redis 中的数据持久化策略(RDB)
    Redis 中的数据库
    Redis 的底层数据结构(对象)
    Redis 的底层数据结构(压缩列表)
    Redis 的底层数据结构(整数集合)
    又离职了~
    如何救活被屏蔽的主机,继续开发工作
  • 原文地址:https://www.cnblogs.com/cchun/p/2520108.html
Copyright © 2020-2023  润新知