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. 2026-Keroro侵略地球

    描述 Keroro来侵略地球之前,曾跟Giroro伍长打赌:“我一个人灭掉整个地球给你看!”. 于是Keroro同学真的自己一个人来到地球开始他的侵略行动了.从K隆星出发之前,Keroro从Kurur ...

  2. eclipse查看jar包中class的中文注释乱码问题的解决

    1,问题来源是在eclipse中直接查看springside的class(由eclipse自动反编译)里面注释的乱码问题: Preferences-General-Workspace-Text fil ...

  3. POJ 1091 跳蚤 容斥原理

    分析:其实就是看能否有一组解x1,x2, x3, x4....xn+1,使得sum{xi*ai} = 1,也就是只要有任意一个集合{ai1,ai2,ai3, ...aik|gcd(ai1, ai2, ...

  4. 用QT创建新风格: QStyle

    转贴: http://hi.baidu.com/yjj2008/blog/item/6cd4a1892ef0d4b60f2444a5.html 本文介绍了如何使用qt提供的接口来设计自己的GUI风格( ...

  5. QT中16进制字符串转汉字

    最经在研究AT指令接受短信,短信是unicode编码,接受后需要根据系统的编码方案进行相关的转码比如接受到了一串字符4F60597D,它是“你好”的unicode编码,一个unicode编码占两个字节 ...

  6. Android:自定义标题栏

    现在很多的Android程序都在标题栏上都显示了一些按钮和标题,这里尝试做个实例 在onCreate中添加: //自定义标题 requestWindowFeature(Window.FEATURE_C ...

  7. Tableau

    http://tableau.analyticservice.net/desktop.html

  8. fd_set 用法

    http://www.cnblogs.com/wolflion/archive/2011/07/13/2539137.html select()函数主要是建立在fd_set类型的基础上的.fd_set ...

  9. dom4j 的小小测试

    @Test public void gogo() throws IOException{ InputStream in = this.getClass().getClassLoader() .getR ...

  10. Android之AndroidManifest.xml文件解析

    转自:Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文 ...