zoukankan      html  css  js  c++  java
  • 【动态规划】最大子串和

    问题 G: 【动态规划】最大子串和

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 33  解决: 22
    [提交][状态][讨论版]

    题目描述

    给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n。


    输入

    第一行是一个整数N(N<=10)表示测试数据的组数)
    每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=<I<=100),表示数列中的所有元素。(0<n<=1000000)

    输出

    对于每组测试数据输出和最大的连续子串的和。

    样例输入

    1
    5
    1 2 -1 3 -2
    

    样例输出

    5
    解题思路:参照http://www.cnblogs.com/TWS-YIFEI/p/5590532.html
    代码:
    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    int a[1000005];
    int sum[1000005];
    
    int main()
    {
        int N;
        long int n;
        long int ans=0;
        scanf("%d",&N);
        for(int z=0;z<N;z++){
            scanf("%ld",&n);
            for(long int i=0;i<n;i++){
                scanf("%d",&a[i]);
            }
            ans=0;
            sum[0]=a[0];
            for(long int i=1;i<n;i++){
                if(sum[i-1]>0){
                    sum[i]=sum[i-1]+a[i];
                }else{
                    sum[i]=a[i];
                }
                if(ans<sum[i]){
                    ans=sum[i];
                }
            }
            if(z!=N-1){
                printf("%d
    ",ans);
            }else{
                printf("%d",ans);
            }
        }
        return 0;
    }
  • 相关阅读:
    hdu 4525(数学)
    hdu 4524(模拟)
    hdu 4523(大整数)
    hdu 4517(递推枚举统计)
    hdu 4520
    hdu 4519(数学题)
    hdu 4514(树的直径+并查集)
    hdu 4510(模拟)
    hdu 2089(数位DP)
    hdu 4506(数学,循环节+快速幂)
  • 原文地址:https://www.cnblogs.com/TWS-YIFEI/p/5727344.html
Copyright © 2011-2022 走看看