zoukankan      html  css  js  c++  java
  • hdu杭电1003 dp 连续子序列最大值

    Problem Description
    Given a sequence a[1],a[2],a[3]……a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.

    Input
    The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line starts with a number N(1<=N<=100000), then N integers followed(all the integers are between -1000 and 1000).

    Output
    For each test case, you should output two lines. The first line is “Case #:”, # means the number of the test case. The second line contains three integers, the Max Sum in the sequence, the start position of the sub-sequence, the end position of the sub-sequence. If there are more than one result, output the first one. Output a blank line between two cases.
    题意:
    输出连续子序列的最大值,且输出起点和终点
    思路
    我是参考了大佬的思路,自己纯暴力写超时,后来才知道是dp题。
    先确定状态,用数组存储每一项的子序列最大值。状态转移方程,如果第i-1项大于0,则第i项的子序列最大值可以由第i-1项的值相加得到否则加0.
    代码

    #include<stdio.h>
    #include<string.h>
    
    #define N 100000
    int num[N+10];
    
    int main()
    {
        int t,i,n,x,sum,temp,end,start,max;
        scanf("%d",&t);
        x = t ;
        while( t --)
        {
            scanf("%d",&n);
            sum = 0;
            temp = 1;
            max = -1001;
            memset(num,0,sizeof(num));
            for( i = 1; i <= n; i ++)
            {
                scanf("%d",&num[i]);
                sum += num[i];//printf("sum=%d
    ",sum);
                if( sum > max)
                {
                    max = sum;
                    start = temp;
                    end = i;
                }
    
                if( sum < 0)
                {
                    sum = 0;
                    temp = i + 1;
                }
    
            }
            printf("Case %d:
    ",x-t);
            printf("%d %d %d
    ",max,start,end);
            if( x-t < x)
                printf("
    ");
        }
        return 0;
     } 
  • 相关阅读:
    UI设计师需要熟记的45个快捷键Windows、Mac
    手把手教你制作好莱坞大片级场景——宇宙猫
    关于功能图标的绘制方法!
    设计师该如何把简历写好?
    PS合成的5个要点:场景、对比、氛围、模糊、纹理
    UI设计工资有多高?怎么快速拿高薪?
    19. Remove Nth Node From End of List
    18. 4Sum
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
  • 原文地址:https://www.cnblogs.com/hellocheng/p/7350170.html
Copyright © 2011-2022 走看看