homework-01
我的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的更多相关文章
- HDU 1074 Doing Homework (dp+状态压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:学生要完成各科作业, 给出各科老师给出交作业的期限和学生完成该科所需时间, 如果逾期一 ...
- 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 ...
- HDU 1074 Doing Homework (状态压缩DP)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- Homework 7 INF 552
Homework 7 INF 552,1. Generative Models for Text(a) In this problem, we are trying to build a genera ...
- Machine Learning, Homework 9, Neural Nets
Machine Learning, Homework 9, Neural NetsApril 15, 2019ContentsBoston Housing with a Single Layer an ...
- STAT UN2102 Homework
STAT UN2102 Homework 4 [100 pts]Due 11:59pm Monday, May 6th on CanvasYour homework should be submitt ...
- 20181009-2 选题 Scrum立会报告+燃尽图(01)
Scrum立会报告+燃尽图(01)选题 此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2190 一.小组介绍 组长:刘莹莹 ...
- 20181120-4 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 01
此作业要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2409 版本控制地址 https://git.coding.net/lg ...
- 20181023-4 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 01
作业要求:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2383] 版本控制:[https://git.coding.net/lglr2 ...
- 前端开发工程师 - 01.页面制作 - 第4章.CSS
第4章.CSS CSS简介 Cascading Style Sheet 层叠样式表:定义页面中的表现样式 history: CSS1(1996)--CSS2(1998)--着手CSS3草案(拆分成很多 ...
随机推荐
- 将jetty嵌入到应用中的简单案例
前面说过jetty最广泛的应用是可以方便的嵌入到应用程序中,而不是作为应用服务器,下面就用最简单的demo来演示一个最简单的应用 1.下载并导入依赖 首先应该建立一个普通的java项目,然后把依赖包导 ...
- LeetCode 162 Find Peak Element
Problem: A peak element is an element that is greater than its neighbors. Given an input array where ...
- 关于easyui datagrid 表格数据处理
首先先将easyui 引入到jsp页面中 <link rel="stylesheet" type="text/css" href="easyui ...
- 【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
(转自:http://blog.csdn.net/reille/article/details/7161942) 作者:reille 本博客网址:http://blog.csdn.net/reille ...
- 51nod1185(wythoff+高精度)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1185 题意:中文题诶- 思路:wythoff模板题,和51n ...
- 数据复制与AA双活(1)
最开始有些概念需要弄明白: 1. 什么是RPO? Wiki: https://en.wikipedia.org/wiki/Recovery_point_objective A recovery poi ...
- Lintcode 150.买卖股票的最佳时机 II
------------------------------------------------------------ 卧槽竟然连题意都没看懂,百度了才明白题目在说啥....我好方啊....o(╯□ ...
- 【React】组件生命周期
初始化阶段 getDefaultPropos:只调用一次,实力之间共享引用 getInitialState:初始化每个实例特有的状态 componentWillMount:render之前最后一次修改 ...
- BitHacks
备份文件时看到的.我以前居然下过这东西. 2016-12-4 12:05:52更新 纯文本格式真棒.假如使用word写的我能拷过来格式还不乱?? Markdown真好. Bit Hacks By Se ...
- CTSC是啥
洛谷看到一题的难度NOI/NOI+/CTSC 百度一下 CTSC (China Team Selection Competition)为国际信息学奥林匹克竞赛(International Olympi ...
我选择的教材是代码大全。