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个小时左右。效率较高。

测试结果截屏(部分)

【现代程序设计】homework-01的更多相关文章

  1. 阅读摘录《javascript 高级程序设计》01

    前言: 因为工作需要,所以开始主攻前台JS方面的技术.在以前的工作中,使用过这门脚本语言.但是都是比较凌乱的,用到什么学什么,只是为了实现业务,而去使用. 不会考虑到代码优化,封装对象等.今次特意借了 ...

  2. javascript高级程序设计--笔记01

    概述 JavaScript的实现包含三个部分: 1  核心(ECMAScript)   提供核心语言功能 2  文档对象模型(DOM)  一套提供了访问以及操作网页内容的API 3  浏览器对象模型( ...

  3. 标准C程序设计七---01

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  4. 现代程序设计homework——04

    题目: 详见:http://www.cnblogs.com/xinz/p/3341551.html 题目本身确实很难,“很难想到一个比较优雅的算法”,这是一个老师请来专门讲解这道题的大牛的原话.确实, ...

  5. Using Vertex Texture Displacement for Realistic Water Rendering

    http://blog.csdn.net/soilwork/article/details/709869 Using Vertex Texture Displacement for Realistic ...

  6. 软工+C(9): 助教指南,持续更新...

    上一篇:提问与回复 下一篇:从命令行开始逐步培养编程能力(Java) 目录: ** 0x00 Handshake ** 0x01 点评 ** 0x02 评分 ** 0x03 知识储备 ** 0x04 ...

  7. 20145218 《Java程序设计》第01次实验报告

    北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.08 实验名称:Java开发环境的熟悉(Linux + Eclipse) 实 ...

  8. 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB

    走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...

  9. 20145219 《Java程序设计》第01周学习总结

    20145219 <Java程序设计>第01周学习总结 教材学习内容总结 软件分类:系统软件(DOS.Windows.Linux等).应用软件(扫雷.QQ等) 人机交互方式:图形化界面.命 ...

  10. HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))

    度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

随机推荐

  1. app上线

    不管第一次还是第二次APP上线都需要三样东西:开发者证书,appID,描述文件

  2. EF中 实现延迟加载 lazyload

    1.创建数据库 2.利用数据库 生成视图 生成2个实体类 和一个model1类 3.写代码 (1) 创建 上下文对象 (2) (3)查询结果 注释: 延迟加载的原因,因为我们操作数据库不会那么简单, ...

  3. 【Java-Method】读《重构》有感_Java方法到底是传值调用还是传引用调用(传钥匙调用)

    今天读<重构>P279, Separate Query from Modifier,将查询函数和修改函数分离. 问题的产生 突然想到 Java 的传对象作为参数的方法到底是 传引用调用,还 ...

  4. IBM区块链总经理谈区块链

    IBM区块链总经理谈区块链:3.4年前IBM的区块链人员就达到了1500人  Captain Hiro 2018-03-20 16:22 发布在 区块链 3 18349 CCN的记者Eric Eiss ...

  5. 2、SpringBoot------数据转换

    开发工具:STS 代码下载链接:https://github.com/theIndoorTrain/Springboot/tree/083bb312526653d27ca56abf4f586e097c ...

  6. MySQL(mariadb)主从复制模式与复制过滤

    在前一篇文章<mysql多实例与复制应用>中只对mysql的复制做了简单的介绍,本篇内容专门介绍一下mysql的复制. MySQL复制 mysql复制是指将主数据库的DDL和DML操作通过 ...

  7. 深入理解PHP7之zval

    PHP7已经发布, 如承诺, 我也要开始这个系列的文章的编写, 今天我想先和大家聊聊zval的变化. 在讲zval变化的之前我们先来看看zval在PHP5下面是什么样子 PHP5zval回顾在PHP5 ...

  8. vue笔记v-bind

    把message的信息绑定给title,运行出来的结果是<span title="you loaded this page on +Mon Nov 21 2016 18:28:38 G ...

  9. vue笔记v-if

    如果ite.type=='培训',显示第一个img, 如果ite.type=='会议',显示第二个img

  10. 【转载】谈MongoDB的应用场景

    引用:http://blog.csdn.net/adparking/article/details/38727911 MongoDB的应用场景在网上搜索了下,很少介绍关于传统的信息化应用中如何使用Mo ...