zoukankan      html  css  js  c++  java
  • (HDOJ 1003)Max Sum

    Max Sum
    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.
     

    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

     

    Author
    Ignatius.L
     
    AC code:
     1 #include<stdio.h> 
     2 #include<string.h> 
     3 #include<stdlib.h>   
     4 int main() 
     5 
     6   
     7     int r = 0,l = 0,i= 0 ,j = 0,num = 0,n;// l用来记录最大左范围r 右 
     8     int *a;//,[6]={5,6,5,-4,-7,3}; 
     9     int sum = 0,max = 0,t= 1
    10     scanf("%d",&n); 
    11     while(n--
    12     { 
    13         scanf("%d",&num); 
    14         a = (int *)calloc(num,sizeof(int)); 
    15         for(i = 0; i < num ;i ++
    16             scanf("%d",&a[i]); 
    17         for( l = 0,r = 0,sum = 0,max = a[0],i = 0;i <num ;i ++
    18         { 
    19             for(sum = 0,j = i ;j <num ;j ++
    20             { 
    21                 sum += a[j]; 
    22                 if(sum > max) 
    23                 { 
    24                     max = sum ; 
    25                     l = i; 
    26                     r = j; 
    27                 } 
    28                 if(sum < 0
    29                 { 
    30                     i = j; 
    31                     sum =0
    32                     break
    33                 } 
    34             } 
    35         } 
    36         printf("Case %d:\n%d %d %d\n",t++,max ,l+1 ,r+1); 
    37         if( n) 
    38             printf("\n"); 
    39         //getchar(); 
    40     } 
    41     return 0

    42 } 

    作者:cpoint
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    测试面试题集-接口测试(9)
    测试面试题集-性能测试(8)
    测试面试题集-网络基础(7)
    测试面试题集-Python编程题(6)
    测试面试题集-Python列表去重(5)
    测试面试题集-生活物品测试:杯子、伞、钢笔、桌子、行李箱、电梯、洗衣机(4)
    测试面试题集-测试用例设计(3)
    测试面试题集-测试基础理论(2)
    解决在docker环境中拉取svn项目中含有中文名称的文件时拉取失败的问题
    redisTemplate之opsForHash()用法分析
  • 原文地址:https://www.cnblogs.com/cpoint/p/2015256.html
Copyright © 2011-2022 走看看