一. 程序的架构和思路:

  这段求解最大子数组之和的程序使用的主要思想是贪心算法,即每一步求出的都是当前的最优解。

  首先这道题要分两种情况来讨论:

  1)如果当前的输入中所有的数均为负数时,那么最后的解就是这个数列中最大的负数。

  2)第二种情况也是大多数情况,不是都为负数时,就要设置一个临时存储分段和的数sub_sun,然后一步步向后比较,只要sub_sum小于0,就舍弃它,舍弃然后向后重新寻找sub_sum.因为只要子分段和小于零,就一定会对后面的和值产生负影响,因此要舍弃。

二. 写这个程序的心得:

  心得就是首先一定要看清题意,这是写一个好程序的基础。

  其次,在写程序前要多多思考,不要认为写出来了就可以了。只有努力的写出时间复杂度与空间复杂度都达到最好的程度时,才能算得上是一个好程序。

三. 程序时间消耗与开发效率分析:

  写这个程序总共花费的时间是一小时,一次编译通过,没有调试。

  然后我在这个程序中为了算出时间,使用了clock函数来计算,但是由于我的测试数据都很小,如下所示,因此大部分的测试数据最后显示的时间都是0.0000s。这点做的还不够好,也是我的一个很大的遗憾。我想把时间显示为纳秒级别的,希望TA能够告诉我如何去实现,(不要显示0ns)谢谢了。

四. 程序运行截图:

  程序截图:

  

  1. #include<stdio.h>
  2. #include<time.h>
  3. #include<stdlib.h>
  4. int main()
  5. {
  6. int n;//输入个数
  7. int a[10000];//存储数据
  8. int i;//遍历
  9. int sub_sum=0;//分段和
  10. int maxsum=0;//记录最大分段和
  11. clock_t start,finish;
  12. while(scanf("%d",&n)!=EOF)
  13. {
  14. for(i=0;i<n;i++)
  15. scanf("%d",&a[i]);
  16. start=clock();//开始时间
  17. maxsum=a[0];
  18. sub_sum=a[0];
  19. //找出最大分段和
  20. for(i=1;i<n;i++)
  21. {
  22. if(sub_sum<0)
  23. sub_sum=a[i];
  24. else
  25. sub_sum+=a[i];
  26. if(maxsum<sub_sum)
  27. maxsum=sub_sum;
  28. }
  29.      finish=clock();//结束时间
  30. printf("%f s\n",(double)(finish-start)/CLOCKS_PER_SEC);//测量时间
  31. printf("%d\n",maxsum);//打印最大分段和
  32. }
  33. return 0;
  34. }

  

五.我的教材用书

  代码大全(第二版)

六.我的github帐号

  ehuaa

homework_01的更多相关文章

  1. Coding 及 git 的工程使用方法

        在过去的两周,同学们除了在学习 C 语言之外,还在学习如何利用 git 将自己的代码上传到 coding 中.也有大量的同学,成功的上传了代码.但是,实际上大部分同学的用法都不合理.这里,以一 ...

  2. 06_Java基础语法_第6天(自定义类、ArrayList集合)_讲义

    今日内容介绍 1.自定义类型的定义及使用 2.自定义类的内存图 3.ArrayList集合的基本功能 4.随机点名器案例及库存案例代码优化 01引用数据类型_类 * A: 数据类型 * a: java ...

  3. 18_集合框架_第18天_集合、Iterator迭代器、增强for循环 、泛型_讲义

    今日内容介绍 1.集合 2.Iterator迭代器 3.增强for循环 4.泛型 01集合使用的回顾 *A:集合使用的回顾 *a.ArrayList集合存储5个int类型元素 public stati ...

随机推荐

  1. js实现ppt

    实现ppt的js框架有很多,这里推荐几个: impress.js      impress.js demo webSlide.js    webSlide.js demo reveal.js      ...

  2. build path功能详解

    在项目上右键>Build path>Config build path “web project”中,一般把"src"设置为source folder,把WEB-INF ...

  3. SelectSingleNode和SelectNodes区别

    SelectSingleNode:选择匹配 XPath 表达式的第一个 XmlNodeSelectNodes:选择匹配 XPath 表达式的结点集合 XmlNodeList

  4. cocos2d_x 问题汇总

    1.生成so文件时,报“No rule to make target ”错误 解决方法:将.\xxx[appname]\proj.android\obj\local\armeabi\objs中的文件全 ...

  5. 如何让Vim显示dos下的^M符号

    /*********************************************************************** * 如何让Vim显示dos下的^M符号 * 声明: * ...

  6. 分析一下FastDFS_java_client中TestClient.java这个文件以及跟它关联的这条线

    本来先打算上个图来说明一下这条线的,可是我的画图工具还没有安装好,我先把跟TestClient.java相关的几个文件代码贴上来,但是由于代码行数还是不少的,所以请大家阅读文章的时候先不要展开代码,等 ...

  7. 自动FTP的小脚本

    自动FTP的小脚本 使用以下脚本,可以实现自动FTP,将你需要的文件传送到需要的地方,或者将需要的文件从某个地方抓取下来. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD) ...

  8. Android平台下实现录音及播放录音功能的简介

    录音及播放的方法如下: package com.example.audiorecord; import java.io.File; import java.io.IOException; import ...

  9. liunx上运行mybase

    mybase 是个人知识管理软件,国内用他的人很多,尤其是程序员.我也是mybase的忠实使用者,有大量的积累.    以前一直用Windows,mybase使用完全没有问题,后来转投ubuntu阵营 ...

  10. 【DFS+堆的二叉树结构】15轻院校赛-J-堆

    [题目链接:J-堆] 1734: 堆 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 239  Solved: 113 SubmitStatusWeb B ...