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草案(拆分成很多 ... 
随机推荐
- 限制textarea的字数(包括复制粘贴)
			<textarea cols="100%" rows="10" id="tuconent" placeholder="评价( ... 
- 51nod1185(wythoff+高精度)
			题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1185 题意:中文题诶- 思路:wythoff模板题,和51n ... 
- linux history命令显示时间
			在CentOS上使用history查看历史使用的CMD记录时,发现没有时间,在当前用户的.bash_profile里面,添加 export HISTTIMEFORMAT="%F %T `w ... 
- iOS-上架APP之启动页设置(新手必看!)
			今天自己做的小作品准备提交,就差一个启动页,各种百度,各种搜,结果还好最后终于出来了,和大家分享一下,这个过程中遇到的各种小问题.(注XCode版本为7.2) 1.启动页一般都是图片,因为苹果有4,4 ... 
- 如何安装ipa文件
			ipa文件就相当于安卓手机的apkWindows的exe,就是一个程序,只不过ipa是苹果手机的安装包而已,一般苹果的应用程序都是从AppStore下载的,ipa一般用于测试App才会这样安装程序. ... 
- mysql提供dataprovider
			import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.Inpu ... 
- 动画系统(Mecanim补充)
			设置状态机部分等在实践中总结. 状态机基础: 动画层 Animation Layers Unity 使用"动画层"来管理身体不同部分的复杂状态机. 动画状态机 Animati ... 
- jQuery中的Ajax - Codeigniter版本
			发送(view中): $.ajax({ type : 'post', url : 'add', data : { 'nickname':nickname, 'mobile':mobile, 'sex' ... 
- Dump类型说明
			通过使用windbg提供DbgHelp库中的MiniDumpWriteDump函数在程序崩溃时写dump文件记录程序当时状态,为后续分析问题提供现场. 该函数提供了DumpType参数,让程序员根据具 ... 
- JS 原型链
			之前对JS的prototype知识比较模糊,今天理清了记下来,以防忘记,直切正题: 1.要明白原型链,就必须先清楚JS的构造函数模式: js是面向对象的语言,既然是面型对象,就一定会有一个对象的模板, ... 
