Max Sum
来源:互联网 发布:free mobile java在线 编辑:程序博客网 时间:2024/06/05 04:51
Given a sequence a1 1,a2 2,a3 3......an 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 Sample Output
25 6 -1 5 4 -77 0 6 -1 1 -6 7 -5
Case 1:14 1 4Case 2:7 1 6
可以利用动态规划,设置数组f[i]代表包含第i个数字的最大和,if (f[i-1]>0) f[i]=f[i-1]+a[i]; else f[i]=a[i];记得处理的同时记录下对于此f[i]的开始位置和结束位置。
#include<iostream>#include<string.h>using namespace std;struct node{ int x,y;};int a[100010],f[100010];node mp[100010];int main(){ int T,n,i,num=0,be,en,m,c; cin>>T; c=T; while(T--) { memset(f,0,sizeof(f)); num++; be=1; en=1; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; m=a[1]; mp[0].x=1; for(i=1;i<=n;i++) { if (f[i-1]>=0) { f[i]=f[i-1]+a[i]; mp[i].x=mp[i-1].x; mp[i].y=i; if (f[i]>m) { be=mp[i].x; en=mp[i].y; m=f[i]; } } else { f[i]=a[i]; mp[i].x=i; mp[i].y=i; if (f[i]>m) { be=mp[i].x; en=mp[i].y; m=f[i]; } } } cout<<"Case "<<num<<":"<<endl; cout<<m<<" "<<be<<" "<<en<<endl; if (num!=c) cout<<endl; } return 0;}
0 0
- Max Sum
- Max Sum
- Max Sum
- max sum
- Max Sum
- Max Sum
- MAX SUM
- Max Sum
- Max Sum
- max sum
- Max Sum
- Max sum
- Max Sum
- Max sum
- Max Sum
- Max Sum
- Max Sum
- max sum
- iOS-文件路径 temp document library 等
- jvm调试笔录
- 设计模式之观察者模式
- linux安装telnet服务端客户端
- git 常用命令
- Max Sum
- Android Material Design系列之主题样式介绍说明等
- AndroidStudio插件 - ButterKnife的使用步骤
- Android Content Provider使用
- android.content.res.Resources$NotFoundException: String resource ID #0x2f38
- SystemUI之控制中心实现
- sitemesh
- iOS中的单例模式
- Hololens的凝视交互