Max Sum(HDU 1003)
来源:互联网 发布:猫眼网络大电影数据 编辑:程序博客网 时间:2024/06/07 08:08
题意:
求最大子段和
思路:
这题刚开始做时没想那么多,还是用的以前的方法。用双重循环,遍历找起点和终点。然后 。。。。。就超时了。因为用了二重循环,N的最大值为100000,时间复杂度为O(N^2)。第二篇代码看了大神的。。。。。居然可以只遍历一遍把每个数依次相加,只要相加后的数小于零累加的变量就重新付零,还有每加一次就要判断是否为最大值。
做这道题要把正数和负数连系起来,想想全为负数的情况,如果全为负就只要找最大值。全为正字段和就是整个数组了。正负都有,连续相加时大于零就取最大值,当连续相加小零了,就要从零开始计数(小于零的数没有子段和为单个值)。虽然写了这么多,但这题觉还是没有理的很透彻。。。。。。
上人代码了
#include <iostream>#include <cstdio>using namespace std;int T;int N;int main(){ int Case=1; scanf("%d",&T); while(T--) { int x,y,Max=-1010; int sum=0; int m=1; scanf("%d",&N); for(int i=1;i<=N;i++) { int temp; scanf("%d",&temp); sum+=temp; if(sum>Max) { Max=sum; x=m; y=i; } if(sum<0) { sum=0; m=i+1; } } printf("Case %d:\n",Case++); printf("%d %d %d\n",Max,x,y); if(T) cout<<endl; } return 0;}
0 0
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- hdu 1003 Max Sum
- HDU-1003 max sum
- HDU 1003 - Max Sum
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- HDU 1003 Max Sum
- hdu 1003 max sum
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- Hdu 1003 - Max Sum
- HDU-1003-Max Sum
- hdu - 1003 - Max Sum
- UILabel用法大全
- Android-项目开发基础—JNI与底层调用(十三)
- UITabBarController标签导航控制器的使用
- ZOJ 1203 Swordfish【最小生成树】
- 【大数据工程师之路】Hadoop——MapReduce概述
- Max Sum(HDU 1003)
- layoutSubviews何时调用的问题
- Android使用ImageLoader异步加载网络图片(一)读取单张图片
- STM32——GPIO输入模式下上拉和下拉的设置
- Ubuntu下安装Eclipse
- HashMap详解
- final方法和final类,内部类
- 分级基金的上折,下折
- 多线程