HOMEWORK-01

1) 建立 GitHub 账户, 把课上做的 “最大子数组之和” 程序签入

  已完成。

2) 在 cnblogs.com 建立自己的博客。 写博客介绍自己的 GitHub 账户.  并把博客地址写到这个博客的留言。这样TA 可以收集信息

  github:Lmeng;

  已将信息发送到TA邮箱。

3) 搞到一本教科书 (三本中选一本), 并在博客中说明自己选的是哪一本

  中文版 代码大全 (第二版) 斯蒂夫·迈克康奈尔 ISBN: 7121022982

4) 阅读下面的博客:

  1. 个人软件开发流程: Personal Software Process,
  2. 程序效能分析
  3. 单元测试 (在最小的编程单元上保证正确性) & 回归测试 (保证程序在修改的过程中, 原有的功能保持稳定 )
  4. 技能的反面

  仔细地阅读了一下这几篇文章,对自己确实有很大启发。其中所提到的效能分析是一个非常棒的方法,可以让程序员知道自己这段程序写得到底怎么样,可以在哪个部分进行优化。还有针对于自己,我还需要抓紧时间、加大努力解决低层次的问题,努力解决中层次的问题,让自己在用有限的时间花在高层次问题上。

5) 在自己的博客上描述自己是怎么设计 “最大子数组之和”这个程序的, 和正确的解法有哪些差距。

  算法:贪心算法;

  思路:最大子数组的子数组之和一定不大于该最大子数组之和。在该最大子数组中,前m个数和都不小于0。所以采用“过程”所描述的方法即可得到正确结果。

  证明:最大子数组Array[n...m]的前i个数和都不小于0。m=0,1,2...m-n+1;

  假设最大子数组为Array[n...m],有子数组Array[n...j],其和小于0,其中,n<j<m,下面用array[p,k]直接表示array[p]+array[p+1]+...+array[k]

  由于Array[n...j] +Array[j...m] = Array[n...m]

  如果Array[n...j]<0

  那么Array[j...m]>Array[n...m]

  所以Array[n...m]不是最大子数组。因此不存在Array[n...j]<0.得证。

  过程:

  1、从第一个数开始扫描数组(Array[1...n]),用tmpMaxSeq记录当前和(tmpMaxSeq = Array[1]+Array[2]+...)。

  2、当tmpMaxSeq<0, 将它置0,

  3、从下一个位置开始继续扫描数组。过程中出现的最大的tmpMaxSeq即为最大子数组之和。

  复杂度:O(n)

  心得体会:这个程序,如果想好了算法,实现起来还是比较简单的。

  时间和效率分析:完成此次全部作业在1个小时左右。效率较高。

测试结果截屏(部分)

最新文章

  1. iOS App上架AppStore 会遇到的坑
  2. php处理图片实现
  3. Using Maven to generate a Java Project or Web project
  4. Java多线程——同步(一)
  5. sql基础查询
  6. linux笔记:文件编辑器vim
  7. JavaScript学习笔记(2)——JavaScript和DOM的关系
  8. Java中重载和重写的区别
  9. c++中使用c语言函数
  10. Technology_Roadmap
  11. Sdcard插拔、状态广播监听,Android文件系统,Android存储器相关知识总结
  12. OI回忆录?
  13. Python 可调用对象
  14. 解决vue &lt;router-link&gt;在IE与火狐上点击失效(路由不跳转)问题
  15. 微信小程序选择并上传图片
  16. C# 接收form表单中多个相同name值的问题
  17. django restframework 简单总结
  18. Java遍历包中所有类方法注解
  19. 3d世界是怎样呈现到屏幕上的
  20. angular指令的详细讲解,不断补充

热门文章

  1. 在写移动端时,a标签或者input标签等 在手机上点击背后会有阴影的解决办法
  2. 使用jdk进行数据迁移(sqlite迁移mysql)
  3. P1266 速度限制
  4. 搭建私有maven库发布及使用流程
  5. css页面出现滚动条左右跳动
  6. rsync同步备份搭建
  7. 深入理解PHP数组函数和预定义接口
  8. HyperLedger Fabric 1.4 区块链技术定义(2.1)
  9. keil调试问题记录
  10. Atlantis HDU - 1542