ACM44 子串和(找到最大和)
2016-03-22 17:36
344 查看
这个题挺简单的额,但我写的时候有思路,但是少了最大值更新的过程。思路有点混乱,所以控制的不是很好。。
描述
给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n。
输入第一行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=<I<=100),表示数列中的所有元素。(0<n<=1000000)
输出对于每组测试数据输出和最大的连续子串的和。
样例输入
样例输出
描述
给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n。
输入第一行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=<I<=100),表示数列中的所有元素。(0<n<=1000000)
输出对于每组测试数据输出和最大的连续子串的和。
样例输入
1 5 1 2 -1 3 -2
样例输出
5
#include<stdio.h> #include<algorithm> using namespace std; int a[1000020],t[1000020]; int main() { int n,m; scanf("%d",&n); while(n--) { int sum=0,max; scanf("%d",&m); for(int i=0;i<m;i++) scanf("%d",&a[i]); sum=max=a[0]; for(int i=1;i<m;i++) { if(sum>0) sum+=a[i]; else sum=a[i]; if(max<sum) max=sum; } printf("%d\n",max); } }
相关文章推荐
- Leetcode 19. Remove Nth Node From End of List
- 不用gif图,用js+css实现loading效果
- Java 判断文件夹、文件是否存在、否则创建文件夹
- #去掉“No SIM Card Installed”提示
- AlphaGo论文的译文,用深度神经网络和树搜索征服围棋:Mastering the game of Go with deep neural networks and tree search
- R 语言介绍
- 键盘通知和自定义键盘
- 深度优先搜索(DFS)
- 生成二维码天下最简单的方法
- hosts的简介
- 编写高性能的Lua代码
- Android用两张图片实现简单动画效果
- model中的layoutChanged ()信号 通知视图更新界面
- (floyd)佛洛伊德算法
- 了解区域类型
- Linux运维文本处理三剑客之sed命令
- BZOJ3223&3224 文艺&普通平衡树 Splay模板(数组)
- C语言查找字符串在文件中的第几行第几列
- 实现activity变暗的效果
- Android 百分比布局库(percent-support-lib) 解析与扩展