1、我的GitHub用户

  首先,接触到现代程序设计这门课之后我才正式开始使用GitHub和它的客户端,以前都是去网站看代码、扒样例。我注册的账户名为:hennande。目前该账户中有我的第一份关于homework-01的代码和记录。

2、我的教科书

  代码大全 (第二版) 斯蒂夫·迈克康奈尔。(这本书又是一时半会儿看不完的节奏啊!……!)

3、最大连续子数组问题

我的思路:

  假设一个数组的最大连续子数组已知,那么这个连续子数组会具有什么特点呢?

  首先,与之首尾相连的元素如果存在,一定是大于等于零的;其次,与之数位相连的子数组如果存在,那么该子数组的和一定是小于等于零的。暂时不考虑存在两个极大连续子数组和相等的情况而产生的优先解判定问题,那么只需从数组的开始进行扫描,每新扫描一个元素就对它以及它之前的子数组是否就有最大连续子数组的特性进行判断,同时对最大值和起始终止位标示进行调整,直到扫描结束即可得到问题的解。

我的源码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[],tempsub,maxsub,i,n;
printf("array length=");
scanf("%d",&n);
tempsub=maxsub=;
for(i=;i<n;i++)
{
scanf("%d",&a[i]);
tempsub+=a[i];
if(tempsub<)
tempsub=;
if(tempsub>maxsub)
maxsub=tempsub;
}
printf("%d\n",maxsub);
return ;
}

我的结果:

我的分析:

  如果以加法操作作为计算复杂度的操作单位,我的算法最多进行n次加法操作,属于O(n)复杂度的算法,基本接近正确方法。研究完答案的代码,发现像答案那样写动态规划的思想更明显,而我自己的做法更像是“投机取巧”。

更改后的版本:

修改源码:

#include <stdio.h>
#include <stdlib.h> int main()
{
int a[],tempsub,minsub,maxsub,i,n;
printf("array length=");
scanf("%d",&n);
tempsub=;
//to get the minimum maxsub, find the minimum subarray;
for(i=;i<n;i++)
{
scanf("%d",&a[i]);
if(i==)
minsub=a[];
if(minsub>a[i])
minsub=a[i];
}
maxsub=minsub;
for(i=;i<n;i++)
{
if(tempsub+a[i]>a[i])
tempsub=tempsub+a[i];
else
tempsub=a[i];
if(tempsub>maxsub)
maxsub=tempsub;
}
printf("%d\n",maxsub);
return ;
}

错误原因:

  当时写第一个算法的时候就有一种“投机取巧”的感觉,也没有进行仔细的测试就贴了出来,研究完GitHub的使用之后才发现,我的第一个方法原来不适合于最大子数组和为负的情况,当然,看过正确的方法之后,加之修改了一通之后,确实意识到了错误的根源,也就老老实实用动归了。

我的感想:

  不得不说,没有进行过相关的程序设计训练的人,对于程序的测试还是很缺少感觉的。做出来的测试点也不具有广泛的代表性,需要提高相关的思维能力。

现代程序设计——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. 图模型的统计推断 inference in graphical models(马尔科夫链的推断)

    有关因子图(factor graphs)以及其在sum product 算法,max-algorithm中的应用,将在一下篇博客中分享. 谢谢您的关注,欢迎提出意见问题.

  2. linux地址映射1、2、3(☆☆☆)

    欢迎关注瘋耔新浪微博:http://weibo.com/cpjphone 一.线性映射与非线性映射                                                   ...

  3. Svn忽略配置

     Debug bin obj *.user *.suo *.vspscc *.scc *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo ...

  4. Oracle EBS Report 输出字符字段前部"0"被Excel自动去掉问题

    Oracle  EBS 提供多种报表的开发和输出形式,由于MS Excel在处理数据方面的优势明显,报表输出用Excel打开是很常见的开发项. 但是正是由于Excel的"过于智能而不智能&q ...

  5. 移动端调试 weinre

    weinre 是基于 Node 的工具,因此使用如下命令安装 weinre $ npm install -g weinre 用上面的命令将 weinre 安装到全局,然后就可以使用 weinre的命令 ...

  6. 1210. Kind Spirits(spfa)

    1210 简单模版题 敲个spfa还得瞟下模版.. #include <iostream> #include<cstdio> #include<cstring> # ...

  7. Python开发环境

    --> Python开发环境简备 Python的优点除了其自身的各种特点外,还因为有众多第三方模块,为其扩展了各方面无数的功能. 虽然大多数时候在百度上随便搜都能搜到一大把,pypi (http ...

  8. windows ping RPi 2B

    /************************************************************************* * windows ping RPi 2B * 声 ...

  9. 陈正冲老师讲c语言之const关键字

    1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...

  10. Erlang分布式在linux和windows上的注意事项

    没事做,就在两台机器间测试下Erlang分布式的例子,一个台是windowsXP,一台装的redHat9,没有详细的文档,自己摸索着搞成功了,记录下. 1.首先,分布式Erlang的实现提供了自有的安 ...