1003:Max Sum
来源:互联网 发布:html下拉框数据库 编辑:程序博客网 时间:2024/05/18 08:57
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003
方法:DP
思路:本题就是求最大连续子序列和,很明显是DP。思路是先开始扫描数组,从1开始,不断求和,并比较和与最大值的关系,这一过程可以在输入过程中就能完成,当和大于最大值的时候,说明加上的当前数应算作最大和子序列当中,所以标记到结束endd里,如果加和小于最大值,说明当前数不能算如最大和子序列当中,如果加和出现了小于零的情况,这应该重新以下一个数作为起点开始寻找子序列,因为对于后面的数来说,如果继续加下去,和只能变小了,所以要重新开始计数,这样就完成了dp过程。
难点:DP的过程,重点掌握,主要是状态转移的过程。
#include <cstdio>using namespace std;int main(){ int n; int i,j; int a[100000+10]; while(~scanf("%d",&n)) { for(j = 1;j <= n;j++) { int num; int sum = 0; int k = 1; int start,endd; scanf("%d",&num); int maxnum = -1010;//这里给出的数据大小是-1000~1000,因此设置一开始的最大值比-1000小即可 for(i = 1;i <= num;i++) { scanf("%d",&a[i]);//这里可一边输入一边处理 sum += a[i]; if(sum > maxnum) { maxnum = sum; start = k; endd = i; } if(sum < 0) { sum = 0; k= i+1; } } printf("Case %d:\n",j); printf("%d %d %d\n",maxnum,start,endd); if(j != n){printf("\n");} } }}
0 0
- 1003 Max Sum
- HDOJ 1003 Max Sum
- HDU 1003 Max Sum
- HDOJ 1003 Max Sum
- 1003:max sum
- hdoj 1003 Max Sum
- hdu 1003 Max Sum
- hdu 1003 Max Sum
- HDOJ 1003 Max Sum
- HDU-1003 max sum
- hdoj 1003Max Sum
- 1003 Max Sum
- HDU 1003 - Max Sum
- HDU 1003 Max Sum
- 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- HDU 1003 Max Sum
- Spring Namespace扩展
- CF_22B_BargainingTable
- Hiberate基础用法实例
- hashCode()的作用
- Java中的构造代码块与静态代码块的特点
- 1003:Max Sum
- 数据库的隔离级别
- 水滴模拟问题(误)hdu5336
- linux下经常使用的快捷键
- 跳跃表基础——POJ 3481 Double Queue
- Kmeans聚类Python程序
- Java反射机制
- AD9导入CAD文件做封装外框
- HDU 2524 矩形A + B【贪心】