• Max Sum


    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. 

    Sample Input

    2
    5 6 -1 5 4 -7
    7 0 6 -1 1 -6 7 -5

    Sample Output

    Case 1:
    14 1 4
    
    Case 2:
    

    7 1 6

    这道题本是dp练习题 我感觉还是贪心好做一点 注意全是负数的情况

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<queue>
    #include<algorithm>
    using namespace std;
    #define  INF  1<<30
    int  main()  
    {  
        int n;  
        int t;
        scanf("%d",&t);
        int cut=1;
        while(t--)  
        {  
             scanf("%d",&n);
            int xu[100000];  
            int qi=1;  
            int wei=1;  
            int max=0;  
            int sum=0;  
            int flog=0;
            int min=-INF,qi1,wei1;
            for(int i=1;i<=n;i++)  
            {  
                scanf("%d",&xu[i]);
    			if(xu[i]>0)
    			{
    					flog=1;
    			}
    			 }  
                 int r=1;  
               for( int i=1;i<=n;i++)  
               {  
                sum+=xu[i];  
                if(xu[i]>min)
                {
                	min =xu[i];
                	qi1=i;
                	wei1=i;
    			}  
    		 if(sum<0)  
                {  
                    sum=0;  
                    r=i+1;  
                }  
                if(sum>=max)  
                {  
                    max=sum;  
                    qi=r;  
                    wei=i;  
                }  
             
    		}  
    		    printf("Case %d:
    ",cut++);    
            if(flog==0)
            {
            	printf("%d %d %d
    ",min,qi1,wei1);
    	    }
           else
           {
           	 printf("%d %d %d
    ",max,qi,wei);  
    	   }
            if(t!=0)
            printf("
    ");
        }  
        return 0;  
    }  


  • 相关阅读:
    poj1113--凸包(Andrew)
    php变量内存完全释放
    php的内存分配还是很智能的
    git 忽略权限记录一下
    开启事务处理插入多条数据 速度也可以
    var_dump(is_writeable(ini_get("session.save_path")));
    要注意一下xss攻击啊
    select *," as A from B union ...
    多次踩坑
    js instanceof运算符
  • 原文地址:https://www.cnblogs.com/kingjordan/p/12027078.html
Copyright © 2020-2023  润新知