Deadline:2018.02.22 22:00 pmhtml
题目描述基础:一栋10层的大楼(楼层编号1-10),设有一台无限载重的电梯,初始时电梯停在1层。电梯移动1层的耗时为1,在某一层停靠的耗时为1(时间初始为0)。为了使得乘客等待的时间(电梯在目的层的停靠时刻 - 乘客发出请求时刻)总和最小,请你编写一个程序来进行电梯调度。git
本次做业是在上一次的电梯调度的代码上进行改善迭代,不只加入新的功能,也对程序的输入输出提出了新的要求。github
1、 输入从文件读取,输出是写入文件。算法
你们在学习 C 语言的时候,应该明白了控制台程序的输入和输出。但文件操做每每是以前的课程中被忽略的一个部分,你们有没有试过“若是我要将程序的输出保存下来”、“若是我要从一个文件中得到输入”这些实操的环节呢?若是没有,如今是一个再好不过的学习机会,来吧,learning by doing!编程
要求:输入输出改为文件输入输出操做。输入文件的文件名为 input.txt
里面保存着输入样例,一个输入为一行,输入的格式见做业的第二条要求。编程语言
例如:学习
0 1 5 2 2 5
程序输出每次对应的决策,每一行的输出格式为 xx时,停靠在x楼
。输出在文件名为output.txt
的文件中。测试
2、此次的乘客再也不像上一次做业那样只会去顶楼或者是 1 楼了,如今要使咱们的程序功能更加贴近现实。优化
迭代:乘客会前往任意一层,请修改程序代码并实现。天然,输入请求就变为了:每一个请求一行,格式为 请求时刻 起始楼层数 去往楼层
。一样,你们也须要本身构造测试样例,让这台“电梯”尽量好的工做。构造五个输入样例,最后输出完成五个请求(全部乘客都到达目的地)后,各乘客的等待时间总和。输入输出的详细例子能够参加上一次做业的要求。搜索引擎
编程语言选择C或C++均可以,但须要符合编码规范,且必需要有注释。编码规范、注释、git commit 信息,均可以上网搜索写法,学会合理使用搜索引擎来学习是计算机专业学生的必经之路。
github使用教程参考:http://www.cnblogs.com/schaepher/p/5561193.html
提交一篇新博客,内容能够包含以下的参考但不只限于:
测试机为Windows环境,因此提交到Github上的项目均须要创建一个名字为BIN的文件夹,里面必须含有可执行文件(以exe为后缀),相关的依赖库,以及输入和输出文件。请注意如下两点:
./output.txt
)/ ElevatorProject(工程名字自行指定便可) / main.cpp / elevator.cpp / elevator.h / BIN / Lib.dll (exe运行须要的动态连接库文件,能够没有) / elevator.exe / input.txt / output.txt
你的程序必须能够在运行时读取 input.txt
中的数据并生成 output.txt
。方便助教在测试时进行批量测试。
如下思路来自于邹欣老师:
电梯调度能够从下面两个出发点简化:
1)先实现一个 “公共汽车” bus mode, 电梯每一个楼层都停,开门,上下乘客,关门,而后继续
2) 再实现一个 “出租车” taxi mode, 电梯一旦接到一个乘客,就直接把乘客送到目的地,途中再也不响应其余乘客的需求。
让同窗从这两个极端调度模式出发, 计算它们运行的效率。 而后再作比较符合实际的调度算法。
没法想出更优解的同窗能够实现这两个简单思路,在博客中贴出本身的程序的构建,优化和思考过程,也算完成做业,但若是只完成最简单的思路没有继续优化的话会酌情扣分。
本次做业代码及随笔做业皆不得抄袭。迟交5天内扣5分,不交0分,抄袭倒扣20分。
因为助教、老师精力有限,手动复制粘贴你们的博客连接、github主页、项目地址,一个个帮你们编译代码确定是不现实的,因此要规定各类格式(好比在博客下面回复本身的连接、第三次做业的文件目录格式等),而后交给爬虫来完成自动化测试,再由助教核对一遍数据确保无误。不注意格式,或者忘了填上连接,你可能不是故意的,而是无意之举,但这无疑要加大助教的工做量。这一次做业的文件目录层次、文件名称的命名务必请你们细心认真,如有错误的会酌情扣分。舒适提示:在下学期结束前尽可能不要更改github用户名,由于已经爬取了你们的github主页地址。