hdoj1003

翻译 2012年03月28日 20:51:22

Max Sum

                                                                        Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

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

#include<stdio.h>
#define M 100003

int T;

int N;

int start;
int end;

int stmp;

int tmp;

int max;

int number[M];

int main(void) {
    int c=0;
    scanf("%d",&T);
    while(T--){
        scanf("%d",&N);
        for(int i=1;i<=N;i++)
            scanf("%d",&number[i]);
        max=-1000000000;
        start=1;
        end=1;
        stmp=1;
        tmp=0;
        for(int i=1;i<=N;i++){
            tmp+=number[i];
            if(tmp>max){
                start=stmp;
                end=i;
                max=tmp;
            }
            if(tmp<0){
                stmp=i+1;
                tmp=0;
            }
        }
        printf("Case %d:\n",++c);
        printf("%d %d %d\n",max,start,end);
        if(T)
            printf("\n");
    }

    return 0;
}


hdoj1003解法

这道题就是寻找最优子结构的问题 一开始我的代码是这样的: #include void main(){ int arr[100002],num,count,sign=0,i,j,sum,x...
  • lwl13207136100
  • lwl13207136100
  • 2016年11月26日 03:14
  • 312

HDOJ 1003 经典DP--求最大字串和

题目链接:点击打开链接 Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/...
  • Dragon_Dai_2017
  • Dragon_Dai_2017
  • 2017年04月25日 14:18
  • 514

HDOJ1003 Max Sum

Max SumTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm...
  • wptad
  • wptad
  • 2007年07月26日 15:58
  • 3200

hdu1003 Max Sum(DP之最大子序列和)

本题看似复杂,而且如果想不出好的算法确实麻烦。以下是我认为比较精妙的算法,居然两个if就解决了,想出它的人还真是厉害啊。 思路很清晰,而且不用复杂的理论推导。 如果序列中全是负数,那么子序列中多加任何...
  • Flynn_curry
  • Flynn_curry
  • 2016年02月15日 13:14
  • 341

HDOJ1003

#include #include #include #include #include #define inf 0x3f3f3f using namespace std; int a[...
  • a363514083
  • a363514083
  • 2011年09月13日 21:29
  • 423

HDOJ1003Max Sum

Problem Description Given a sequence a[1],a[2],a[3]……a[n], your job is to calculate the max sum of ...
  • qq_26525215
  • qq_26525215
  • 2015年09月20日 18:17
  • 518

HDOJ 1003 最大子序列和(DP)

HDOJ 1003 摘自:http://m.blog.csdn.net/u013555159/article/details/50532173该题应用动态规划思想我们可以从几个角度来分析这个问题,我...
  • qq_37360631
  • qq_37360631
  • 2017年08月07日 10:12
  • 182

HDOJ 1003 Java答案

HDOJ 1003 Java
  • u013451048
  • u013451048
  • 2016年10月16日 14:28
  • 570

hdoj1003

#include main(){ int s[100000+1],d[100000+1]; int t,t1,n,i,j,start,end,max,sum; scanf("%d",&t...
  • shuhao_
  • shuhao_
  • 2014年12月25日 14:28
  • 175

HDOJ1003 map

#include #include #include using namespace std; int main () { int n; int i; map mp; string...
  • suichen1
  • suichen1
  • 2013年03月17日 22:18
  • 424
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdoj1003
举报原因:
原因补充:

(最多只允许输入30个字)