51Nod 1049 最大子段和(简单DP)
2016-02-10 15:55
239 查看
1049 最大子段和
![](http://www.51nod.com/images/icon/ok.png)
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
![](http://www.51nod.com/images/icon/star.png)
收藏
![](http://www.51nod.com/images/icon/plus.png)
关注
N个整数组成的序列a[1],a[2],a[3],…,a
,求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。
例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。
Input
Output
Input示例
Output示例
题解:寻找和最大的字段时,当前记录的子段的和为负数时,就要以下一个点为起点重新找子段了。
代码如下:
![](http://www.51nod.com/images/icon/ok.png)
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
![](http://www.51nod.com/images/icon/star.png)
收藏
![](http://www.51nod.com/images/icon/plus.png)
关注
N个整数组成的序列a[1],a[2],a[3],…,a
,求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。
例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。
Input
第1行:整数序列的长度N(2 <= N <= 50000) 第2 - N + 1行:N个整数(-10^9 <= A[i] <= 10^9)
Output
输出最大子段和。
Input示例
6 -2 11 -4 13 -5 -2
Output示例
20
题解:寻找和最大的字段时,当前记录的子段的和为负数时,就要以下一个点为起点重新找子段了。
代码如下:
#include<cstdio> #include<cstring> __int64 max(__int64 a,__int64 b) { return a>b?a:b; } int main() { __int64 summax,sum; int i,n,num; while(scanf("%d",&n)!=EOF) { summax=0; sum=0; for(i=0;i<n;++i) { scanf("%d",&num); sum=max(sum,0)+num; summax=max(sum,summax); } printf("%I64d\n",summax); } return 0; }
相关文章推荐
- 第一个Java程序
- 6.2、朴素贝叶斯实例
- onethink
- BZOJ 1112 POI2008 砖块
- #Android源码#View的onMeasure方法
- Python教程学习简记6--Python 生成器 generator
- 1016. 部分A+B
- 可变长参数示例
- Maven异常:Dynamic Web Module 3.0 requires Java 1.6 or newer.
- Android studio优点及快捷键
- 我的第一个JApplet-绘制笑脸
- connot be resolved to a variable
- 最简洁的nginx反向代理例子配置
- URAL1534 进球
- C++自制Redis 数据库(九) 详细数据库存储结构,线程相关已解决
- POJ 3279 Fliptile【枚举】
- POJ 3279 Fliptile【枚举】
- Word Search II 题解
- 对农行金e顺k令的一些猜测
- 黄聪:wordpress如何扩展TinyMCE编辑器,添加自定义按钮及功能