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

  • 相关阅读:
    oracle改表语句
    pr视频过渡效果
    远程桌面连接
    kill-power
    Leetcode 466.统计重复个数
    Leetcode 464.我能赢吗
    Leetcode 462.最少移动次数使数组元素相等
    Leetcode 459.重复的子字符串
    Leetcode 458.可怜的小猪
    Leetcode 457.环形数组循环
  • 原文地址:https://www.cnblogs.com/cchun/p/2520108.html
Copyright © 2011-2022 走看看