一. 程序的架构和思路:

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

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

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

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

二. 写这个程序的心得:

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

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

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

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

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

四. 程序运行截图:

  程序截图:

  

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
int n;//输入个数
int a[10000];//存储数据
int i;//遍历
int sub_sum=0;//分段和
int maxsum=0;//记录最大分段和
clock_t start,finish;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
start=clock();//开始时间
maxsum=a[0];
sub_sum=a[0];
//找出最大分段和
for(i=1;i<n;i++)
{
if(sub_sum<0)
sub_sum=a[i];
else
sub_sum+=a[i];
if(maxsum<sub_sum)
maxsum=sub_sum;
}
     finish=clock();//结束时间
printf("%f s\n",(double)(finish-start)/CLOCKS_PER_SEC);//测量时间
printf("%d\n",maxsum);//打印最大分段和
}
return 0;
}

  

五.我的教材用书

  代码大全(第二版)

六.我的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. linux内核链表分析

    一.常用的链表和内核链表的区别 1.1  常规链表结构        通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系.按照指针域的组织以及各个节 ...

  2. 设置UITableView section间距

    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 0 ...

  3. static,this,抽象类,接口和包

    1. static 1)静态变量:Java虚拟机为静态变量开辟单独的存储空间,所以所有的对象内部的静态变量在内存中都指向同一个地址,那么不管哪个对象改变这个成员变量,所有对象中该成员变量的值都发生变化 ...

  4. github的large file storeage

    https://git-lfs.github.com/ 1.从这个网址下载git-lfs-windows-amd64-1.1.0.exe,运行这个安装包 2.然后打开git bash 输入git lf ...

  5. poj3307

    可以证明,每个符合的数都由2,3,5,7相乘得到. 依据猜想:下一个出现的数是由前面某个数乘上这几个数之一得到的新的数. 假设之前的数均满足序列,则因为下一个数必有2,3,5,7相乘得到,而这个数之前 ...

  6. 函数buf_page_init

    /********************************************************************//** Inits a page to the buffer ...

  7. Discuz 5.x/6.x/7.x投票SQL注入分析

    看乌云有人爆了这个漏洞:http://www.wooyun.org/bugs/wooyun-2014-071516感觉应该是editpost.inc.php里投票的漏洞.因为dz已经确定不会再修补7. ...

  8. Android-Universal-Image-Loader

    基本以后都不用了,所以自己就不总结了 http://www.cnblogs.com/kissazi2/p/3886563.html http://www.cnblogs.com/kissazi2/p/ ...

  9. tomcat 默认项目设置

    正常情况下,我们启动tomcat后,直接输入“http://localhost:端口/“ 后,默认访问道是webapp目录下的ROOT应用. 我们要通过上述方式访问自己的应用,有俩种方式. 第一:把自 ...

  10. linux中find命令的使用

    google找到一个很好的讲解:http://www.chinaz.com/server/2009/0807/85796.shtml