51Nod 1049 最大子段和
来源:互联网 发布:uuu网络加速器 编辑:程序博客网 时间:2024/06/05 13:28
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如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
很简单的dp。刚开始接触,有难度,有意思。这个假如用两个for循环处理,会爆。我试了。这个题上呢,有一点需要注意,那就是数字会太大,需要用longlong 但是c++的max不行,需要自己写一个max函数。就这。附代码:
#include <stdio.h>#include <string.h>long long int max(long long a,int b){ if(a>b) return a; else return b;}int main(int argc, const char * argv[]){ int n, i, k, j; scanf("%d",&n); int a[n]; long long int dp[n]; memset(dp,0,sizeof(dp)); for(i=0;i<n;i++) { scanf("%d",&a[i]); } dp[0]=a[0]; long long int maxn=-1e9; for(i=1;i<n;i++) { dp[i]=max(dp[i-1],0)+a[i]; if(dp[i]>maxn) maxn=dp[i]; } printf("%I64d\n",maxn); return 0;}
0 0
- 51nod 1049 最大子段和
- 51Nod 1049 最大子段和
- 51nod:1049 最大子段和
- 51Nod--1049最大子段和
- 51nod 1049 最大子段和
- 51nod 1049 最大子段和
- 51nod 1049 最大子段和
- 51Nod 1049 最大子段和
- 【51nod】1049 最大子段和
- 51NOD 1049 最大子段和
- 51Nod 1049 最大子段和
- 51nod 1049 最大子段和
- 51Nod 1049 最大子段和
- 51Nod 1049 最大子段和
- 51Nod-1049-最大子段和
- 51Nod 1049 最大子段和
- 51Nod-1049 最大子段和
- 51nod--1049 最大子段和
- nodejs中的继承
- FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDPAU解码器和渲染器
- Java对象的序列化与反序列化
- WebStudy00_HTML+CSS
- WebStudy01_JavaScript
- 51Nod 1049 最大子段和
- column命令+pagesize命令+linesize命令+ttitle命令+btitle命令+break命令/comput命令
- Unity AudioSource播放事件监听
- WebStudy02_jQuery
- java.lang.Exception: No tests found matching Method test5(com.crosudd.test.TestMybatis) from org.jun
- ros中常见各坐标系之间衔接关系
- iOS UITableView 使用总结
- WebStudy03_HTML5+CSS3
- CodeForces 768C Jon Snow and his Favourite Number 暴力 空间换时间