我的GitHub账户名是Firedamp。

其实我最一开始看到最大子序列的和这个题目,最先想到的就是最简单的O(n^3)的算法,在课堂上教的也确实是这个程序,但是这种算法的时间复杂度必然是最高的,在数据比较大的时候需要付出很大的代价,于是我开始寻求新的方法,在参考了TA的博客之后,我对那种O(n)的算法产生了兴趣并仔细思考,具体如下:

将输入的数据存入数组num,从头开始扫描,同时维护两个变量max与maxend,其中,扫描到num[i]时,max是序列num[0], num[1], ... , num[i-1]的最大子序列的和,maxend是序列num[0], num[1], ... , num[i]的以num[i]结尾的最大子序列的和,那么序列num[0], num[1], ... , num[i]的最大子序列的和必然是max与maxend中较大的那个,赋予max。而对于maxend,在前一步扫描中有maxend是序列num[0], num[1], ... , num[i-1]的以num[i-1]结尾的最大子序列的和,那么扫描到num[i]时,以num[i]结尾的最大子序列之和必然是maxend+num[i]与num[i]中较大的那个,赋予maxend。

初始化max与maxend都为num[0],即扫描第一个数后max与maxend都是第一个数本身,从第二个数开始利用以上递推求解。由此就可以求出给定序列的最大子序列之和。

对TA的博客中将max_so_far和max_ending_here初始化为数组中元素的最小值的质疑:若数组中最小值是正数,那么扫描第一个数时就会出现差错。具体以只有一个数字1的序列为例,初始化max_so_far和max_ending_here都为1,那么在执行完以下这两句话后打印出的结果为2,但是很显然这个序列的最大子序列的和为1.

for i in range(0, n):
max_ending_here = max(max_ending_here + num[i], num[i])
max_so_far = max(max_so_far, max_ending_here) 截图如下:
我选择的教材是代码大全。

homework-01的更多相关文章

  1. HDU 1074 Doing Homework (dp+状态压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:学生要完成各科作业, 给出各科老师给出交作业的期限和学生完成该科所需时间, 如果逾期一 ...

  2. HDU 1074 Doing Homework(像缩进DP)

    Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of h ...

  3. HDU 1074 Doing Homework (状态压缩DP)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  4. Homework 7 INF 552

    Homework 7 INF 552,1. Generative Models for Text(a) In this problem, we are trying to build a genera ...

  5. Machine Learning, Homework 9, Neural Nets

    Machine Learning, Homework 9, Neural NetsApril 15, 2019ContentsBoston Housing with a Single Layer an ...

  6. STAT UN2102 Homework

    STAT UN2102 Homework 4 [100 pts]Due 11:59pm Monday, May 6th on CanvasYour homework should be submitt ...

  7. 20181009-2 选题 Scrum立会报告+燃尽图(01)

    Scrum立会报告+燃尽图(01)选题 此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2190 一.小组介绍 组长:刘莹莹 ...

  8. 20181120-4 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 01

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2409 版本控制地址   https://git.coding.net/lg ...

  9. 20181023-4 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 01

    作业要求:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2383] 版本控制:[https://git.coding.net/lglr2 ...

  10. 前端开发工程师 - 01.页面制作 - 第4章.CSS

    第4章.CSS CSS简介 Cascading Style Sheet 层叠样式表:定义页面中的表现样式 history: CSS1(1996)--CSS2(1998)--着手CSS3草案(拆分成很多 ...

随机推荐

  1. Python之Web前端jQuery扩展

    Python之Web前端: 一. jQuery表单验证 二. jQuery扩展 三. 滚动菜单 一. jQuery表单验证: 任何可以交互的站点都有输入表单,只要有可能,就应该对用户输入的数据进行验证 ...

  2. LeetCode 167 Two Sum II - Input array is sorted

    Problem: Given an array of integers that is already sorted in ascending order, find two numbers such ...

  3. SqlServer 2008登录时报错

    登录SQLServer2008R2时提示如下错误: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server ...

  4. Clang与libc++abi库安装

    系统ubuntu64位 Clang4.0 参考: 1 https://github.com/yangyangwithgnu/use_vim_as_ide#0.1 其中 第7章 工具链集成 2. htt ...

  5. netstat相关

    1. netstat基本参数: 参数 说明 输出 -a 列出所有连接. 列出 tcp, udp 和 unix 协议下所有套接字的所有连接.然而这些信息还不够详细,管理员往往需要查看某个协议或端口的具体 ...

  6. MYSQL字符类型数值排序

    今天遇到MySQL数字排序问题,我的排序字段是经过计算后的,而计算后的字段直接拿来排序就会按照字符一个个排序,所以这里找到简单的方法, ORDER BY 排序字段* 或者 ORDER BY 排序字段+ ...

  7. iOS支付宝支付总结

    1.按照http://doc.open.alipay.com/doc2/detail?spm=0.0.0.0.SWdJgo&treeId=59&articleId=103676& ...

  8. Power BI for Office 365 概览

    伴随着数据量的日益增长,通过自服务式的商业智能把数据转换成辅助决策支持的工具,越来越成为迫切的需求.在以前,处理这些数据往往只是IT人员范围内的事,但是通过Power BI for Office 36 ...

  9. Log4Net记录日志的使用

    Log4net 基本样式: <log4net> <appender name="LogFileAppender" type="log4net.Appen ...

  10. 获取 windows 商店内的 aapx 安装包 并 安装(旁加载)

    这是一篇教程,写在 win10 版<量子破碎>发售近期. 主要原因:windows 商城的应用下载实在难以忍受...... #######2016-4-9更新####### 4-6号通过旁 ...