HDU1003 - Max Sum (最大连续子串和)
2015-08-30 01:42
423 查看
解题思路
代码
每读进来一个数,就与当前进行加和,并更新最大值信息,若和值小于 0 , 再从头开始。
其他方法也可以做(动规的思路),对这道题来说,需要注意的是 全负 的情况。
代码
题目链接: HDU1003 - Max Sum
解题思路
最大连续字段和,方法很多,这里用一种 在线更新 的做法。每读进来一个数,就与当前进行加和,并更新最大值信息,若和值小于 0 , 再从头开始。
其他方法也可以做(动规的思路),对这道题来说,需要注意的是 全负 的情况。
代码
#include <iostream> #include <cstdio> using namespace std; const int inf = 0x7fffffff; int main() { int n, num, t, tt=1; bool first = true; scanf("%d", &t); while(t--) { scanf("%d", &n); int maxsum = -inf; int ans_s = 0, ans_e = 0; int cur = 1, sum = 0; for(int i=1; i<=n; i++) { scanf("%d", &num); sum += num; if(sum>maxsum) { maxsum = sum; ans_s = cur; ans_e = i; } if(sum<=0) { sum = 0; cur = i+1; } } if(first) { first = false; printf("Case %d:\n%d %d %d\n", tt++, maxsum, ans_s, ans_e); } else { printf("\nCase %d:\n%d %d %d\n", tt++, maxsum, ans_s, ans_e); } } return 0; }
相关文章推荐
- 翻转链表 II
- POJ2479 - Maximum sum (动规)
- POJ2709 - Painter (贪心)
- 初步02-长方形的周长和面积
- 弹窗加密代码(可关闭)
- 2015.8.23作业 Linux命令学习
- MAC下使用feddler进行抓包
- POJ3264 - Balanced Lineup (线段树 基本操作)
- HDU 4408 Minimum Spanning Tree (图的最小生成树计数 Kruskal + Matrix_Tree定理)
- POJ3468 - A Simple Problem with Integers (线段树 区间更新)
- Ubuntu下Tomcat初始配置
- UVa11582 - Colossal Fibonacci Numbersl (打表找规律)
- FastJson的使用
- HDU5024--Wang Xifeng's Little Plot(DFS) 4000
- jQuery div层渐入渐出效果
- 线程 相关知识(二)
- TreeSet倒序
- mysql-5.6.19-winx64免安装版配置
- Android-Service(系统服务实例:定位,网络判断,电话服务 ,通知栏通知等)
- Batsing的网页编程规范(HTML/CSS/JS/PHP)