nyoj 44 子串和 【简单dp】
2015-11-28 14:21
477 查看
难度:3
描述 给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n。
输入第一行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=<I<=100),表示数列中的所有元素。(0<n<=1000000)输出对于每组测试数据输出和最大的连续子串的和。样例输入
样例输出
[/code]
子串和
时间限制:5000 ms | 内存限制:65535 KB难度:3
描述 给定一整型数列{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<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<queue> #include<vector> #include<cmath> using namespace std; const int maxn=1000005; const int inf=0x3f3f3f3f; int dp[maxn]; int main() { int t; scanf("%d",&t); while(t--) { int n; int sum=-inf; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&dp[i]); if(dp[i-1]>0) dp[i]=dp[i]+dp[i-1]; if(sum<dp[i]) sum=dp[i]; } printf("%d\n",sum); } return 0; }
[/code]
相关文章推荐
- 161 Examine the following command used to perform incremental level 0 backup: RMAN> BACKUP INCREMENT
- yii2 控制器里 action 大小写组合造成的路由问题
- bzoj 3196 Tyvj 1730 二逼平衡树
- 课题相关的资料汇总
- Hadoop-Drill深度剖析
- mysql-5.6.17源码调试
- LPC54100 LPC54101 LPC54102 LPC541xx系列串口用法
- 4412裸机程序之lcd
- murmurhash
- nyoj 37 回文字符串 【lcs&&dp】
- 在Android中,使用Kotlin的 API请求简易方法
- 一起talk C栗子吧(第六十五回:C语言实例--DIY字符串连接函数)
- ESB报文自动生成工具
- ESB报文自动生成工具
- 160 You want to use the automatic management of backup and recovery operations features for your dat
- ESB报文自动生成工具
- hibernate 异常:could not locate named parameter
- OpenCV Open Camera 打开摄像头
- html的常用标签
- cmd命令生成android签名证书