51Nod-最大子段和(动态规划)
来源:互联网 发布:ubuntu默认账号密码 编辑:程序博客网 时间:2024/06/06 19:35
基准时间限制: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-211-413-5-2
Output示例
20
#include <iostream>#include <stdio.h>#include <string.h>using namespace std;long long int a[50005];//注意这里范围用long long int 因为数的范围是10的9次方了long long int dp[50005];//表示前i个数最大的字段和long long int start[50005];int main(){ int n; scanf("%d",&n); int flag=0; for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); if(a[i]>=0) flag=1; } if(!flag) { printf("0"); return 0; } memset(dp,-0x3f3f3f,sizeof(dp)); start[1]=a[1]; dp[1]=a[1]; for(int i=2;i<=n;i++) { start[i]=max(a[i],a[i]+start[i-1]);//注意理解该状态转移方程 dp[i]=max(dp[i-1],start[i]); } printf("%lld\n",dp[n]); return 0;}
阅读全文
0 0
- 51Nod-最大子段和(动态规划)
- 51nod 最大子段和(动态规划DP)
- 【51nod 教程】最大子段和问题(动态规划)
- 51nod(动态规划入门---最大子段问题)
- 最大子段和(动态规划)
- 动态规划----最大子段和
- 最大子段和(动态规划)
- 最大子段和动态规划实现
- 【动态规划】最大m子段和
- 动态规划 - 最大子段和
- 最大子段和-分治&&动态规划
- 动态规划求解最大子段和
- 动态规划之最大子段和
- 动态规划求最大子段和
- 动态规划之最大子段和
- 动态规划,最大子段和
- 动态规划 最大子段和问题
- 动态规划求最大子段和
- pythonsql操作2
- 【算法】程序猿不写代码是不对的77
- java clone方法使用详解
- Thread Dumps基本范例
- 新闻动态
- 51Nod-最大子段和(动态规划)
- visual studio2013 中配置 opencv3.0
- vmware虚拟机上ubuntu 10.04不能连上外网解决办法----本人备注
- python学习资料
- Android文件存储全攻略
- 手把手教你如何用AIDL实现进程通信
- unity 的游戏脚本组件的生命周期
- hibernate学习 hibernate概述
- mysql查询索引优化