HDU 1003

来源:互联网 发布:数控编程培训靠谱吗 编辑:程序博客网 时间:2024/06/17 05:24
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
25 6 -1 5 4 -77 0 6 -1 1 -6 7 -5
 

Sample Output
Case 1:14 1 4Case 2:7 1 6
 

Author

Ignatius.L





考虑一个“对于前n个数最大的必须到达末尾的连续子序列”,我就把简称为MESS(Max end sub-sequence)

例如“6 -1 5 4 -7”这个数列,对于前3个数“6 -1 5”,它从末尾出发,设其和最大的子序列为MESS[3],

那么对于前四个“6 -1 5 4”,MESS[4]= (    (MESS[3]>0)     ?     (MESS[3]+num[4])     :     (num[4])    );

另外,最后遍历MESS数组,找到最大的那个值就是answer,那个位置就是子序列的末尾位置,另外为了记录子序列的开始位置,我把MESS定义成了结构体……里面定义一个sum用来存最大的和,另外定义一个begin来储存开始位置。

#include<cstdio>int num[100003];typedef struct{int sum;int begin;}type;type MESS[100003];int main(){int t,n;scanf("%d",&t);for(int kase=1;kase<=t;kase++){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&num[i]);MESS[1].sum=num[1];MESS[1].begin=1;for(int i=2;i<=n;i++){if(MESS[i-1].sum<0){MESS[i].sum=num[i];MESS[i].begin=i;}else{MESS[i].sum=MESS[i-1].sum+num[i];MESS[i].begin=MESS[i-1].begin;}}type max=MESS[1];int end=1;for(int i=2;i<=n;i++) if(max.sum<=MESS[i].sum) {max=MESS[i];end=i;}if(kase>=2) printf("\n");printf("Case %d:\n%d %d %d\n",kase,max.sum,max.begin,end);}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 八个月宝宝断奶不吃奶粉怎么办 宝宝断奶不喝奶粉怎么办 周岁 给娘家东西婆家看见怎么办 自己娘家妈总说婆家人坏话怎么办 娘家婆家老公都没有依靠怎么办? 2岁宝宝断奶粉怎么办 2岁宝宝夜奶频繁怎么办 宝宝15个月还在吃夜奶怎么办 宝宝两岁四个月还吃母乳怎么办 宝宝睡前老是找奶吃怎么办 宝宝戒奶晚上哭怎么办 宝宝戒奶半夜哭怎么办 吸习惯母乳不吸奶嘴怎么办 八个月宝宝奶睡怎么办 宝宝要吸着奶睡怎么办 戒母乳胸胀的疼怎么办 断奶孩子晚上哭的厉害怎么办 喜欢咬指甲的人怎么办? 成年了还咬指甲怎么办 戒奶乳房有硬块怎么办 戒奶七天有硬块怎么办 两岁宝宝喘气粗怎么办 两岁宝宝断不了奶怎么办 两岁宝宝不愿意喝奶粉怎么办 吃母乳不愿意吃奶粉怎么办 母乳宝宝不愿意喝奶粉怎么办 宝宝断母乳不喝奶粉怎么办 9个月宝宝不会爬怎么办 孩子五年级学习成绩差该怎么办 孩子临近中考学习成绩很差该怎么办 初中生成绩不好家长该怎么办 成绩差该怎么办贴吧 宝宝只会匍匐爬怎么办 一年级的孩子数学不好怎么办 小学一年级孩子数学不好怎么办 孩子上一年级数学太差怎么办 智商低情商也低怎么办? 孩子字写得很大怎么办 孩子拿笔重 写字太黑 怎么办 孩子语文成绩好数学不行怎么办? 孩子现在二年级特别叛逆怎么办