homework_01
一. 程序的架构和思路:
这段求解最大子数组之和的程序使用的主要思想是贪心算法,即每一步求出的都是当前的最优解。
首先这道题要分两种情况来讨论:
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的更多相关文章
- Coding 及 git 的工程使用方法
在过去的两周,同学们除了在学习 C 语言之外,还在学习如何利用 git 将自己的代码上传到 coding 中.也有大量的同学,成功的上传了代码.但是,实际上大部分同学的用法都不合理.这里,以一 ...
- 06_Java基础语法_第6天(自定义类、ArrayList集合)_讲义
今日内容介绍 1.自定义类型的定义及使用 2.自定义类的内存图 3.ArrayList集合的基本功能 4.随机点名器案例及库存案例代码优化 01引用数据类型_类 * A: 数据类型 * a: java ...
- 18_集合框架_第18天_集合、Iterator迭代器、增强for循环 、泛型_讲义
今日内容介绍 1.集合 2.Iterator迭代器 3.增强for循环 4.泛型 01集合使用的回顾 *A:集合使用的回顾 *a.ArrayList集合存储5个int类型元素 public stati ...
随机推荐
- bind搭建(二)反向解析
我们在上一节已经知道了怎么建立DNS的服务器端,可以实现了域名到IP之间的转换.那么好我们现在就来了解一下如何实现反向的DNS解析,也就是IP到域名的映射. 步骤如下: l 在/etc/named中 ...
- Android Studio安装后第一次进不去
Android Studio 安装后第一次进不去,因为检查到有更新的SDK,在下载.但是呢,没有FQ的情况下,无法下载下来,所以就卡住了. 那么解决方案就是让 Android Studio 第一次启动 ...
- Android开发之权限列表
权限定义 功能 android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问"properties"表在checkin数据库中,改值可以修 ...
- 1085: [SCOI2005]骑士精神
A*搜索. A*搜索的基础百度百科(实在偷懒没看论文之类的),在这里不说了. A*搜索很关键的是h(n)估价函数的选取(表示现在到结束节点需要的距离) 设d(n)为实际到结束节点的距离.h(n)< ...
- SQL千万级数据设计和优化
1. 数据太多.放在一个表肯定不行. 比如月周期表.一个月1000万,一年就1.2亿,如此累计下去肯定不行的.所以都是基于一个周期数据一个表.甚至一个周期数据就要分几个分表.主要是考虑实际的数据量而定 ...
- PHP运行模式的深入理解
PHP运行模式有4钟:1)cgi 通用网关接口(Common Gateway Interface))2) fast-cgi 常驻 (long-live) 型的 CGI3) cli 命令行运行 ( ...
- Websocket和PHP Socket编程
本来是搜一些html5 websocket资料看的,结果被引去看了php的socket编程.下面是一些简单的例子,在命令行运行php脚本就行 [命令行运行PHP]PHP中有一个php.exe文件,可以 ...
- 解析UML9种图的作用
本文和大家重点讨论一下UML9种图的概念,UML中有五类图,共有9种图形,每种图形都有各自的特点,下面就让我们一起来看一下这些图形特点的详细介绍吧. UML9种图简介 1.用例图 说明的是谁要使用系统 ...
- I.MX6 开启 1000Mb/s interface
/*********************************************************************** * I.MX6 开启 1000Mb/s interfa ...
- acdream 1684 娜娜梦游仙境系列——莫名其妙的插曲 (gcd)
题意:一开始有一个集合,集合里有n个不同的数,然后Alice(娜娜)与Bob轮流进行操作,每人都可以任意选择两个数a,b,不妨设a>b,不过要求a-b不在集合中,把a-b放入集合(集合元素个数只 ...