电梯调度算法

对于电梯的要求:电梯在一楼出发,待用户输完想停的楼层后,停在其中的一层楼然后所有人下去徒步找各自的目标地,使最后所有人的爬楼梯数最短。

设最后停在i层,i层下有n1个人,i层有n2个人,i+1层有n3个人,假设停i层为最短Y,若停在i-1层则Y-(n1-n2-n3)停在i+1层则Y-(n3-n1-n2)则n1>n2+n3停在i-1层,n3>n1+n2则电梯停在i+1层合算其余停i。

 1 //电梯算法
 2 #include<iostream>
 3 using namespace std;
 4
 5 int main()
 6 {
 7     int people[10];
 8     int i;
 9     int n1 = 0;
10     int n2;
11     int n3 = 0;
12     /*int sum;*/
13     for (i = 0; i < 10; i++)
14     {
15         cin >> people[i];
16     /*    sum += people[i];*/
17     }
18     n2 = people[0];
19     for (i = 1; i <= 9; i++)
20     {
21         n3 += people[i];
22     }
23     for (i = 0; i < 10; i++)
24     {
25         if (n3 > n1 + n2)
26         {
27             n1 = n1 + n2;
28             n2 = people[i + 1];
29             n3 -= people[i + 1];
30         }
31         else
32         {
33             cout << "要停在";
34             cout << i + 1;
35             break;
36         }
37     }
38
39
40     return 0;
41 }

时间复杂度o(n)的算法优化了,却是我思维僵化了,本算法在老师的帮助下想出的。

时间: 2024-11-05 13:27:30

电梯调度算法的相关文章

结对项目:电梯调度算法的实现和测试——报告

一.编程人员 徐方宇.陈少杰 二.工作照片 三.结对编程优缺点 优点: 1. 程序员互相帮助,互相教对方,可以得到能力上的互补. 2. 可以让编程环境有效地贯彻Design. 3. 增强代码和产品质量,并有效的减少BUG. 4. 降低学习成本.一边编程,一边共享知识和经验,有效地在实践中进行学习. 5. 在编程中,相互讨论,可能更快更有效地解决问题. 缺点: 对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾. 两个人在一起工作可能会出现工作精力不能集中的情况.程序员可能会交谈一些与工作

1.8 小飞的电梯调度算法

题目:有一栋楼,现在设计一种电梯调度算法:电梯在一楼让大家上电梯,然后根据大家选择要到的楼层算出某一楼层i,电梯在i层停下让所有人下电梯,然后大家爬楼梯达到自己的楼层.请问电梯停在哪一层,可以使得这一次的所有乘客爬楼层之和最短? (一) 最直接最简单的方法就是直接枚举从第一层到最后一层,然后算出电梯停在哪一层会使得所有乘客爬楼层之和最短. 代码如下: int nPerson[]; //nPerson[i]表示到第i层的乘客的数目 int nFloor = 0, nMinFloor = 0; in

编程之美读书笔记1.8 - 小飞的电梯调度算法

http://blog.csdn.net/pipisorry/article/details/36688019 问题: 亚洲微软研究院所在的希格玛大厦一共有6部电梯.在高峰时间,每层都有人上下,电梯每层都停.实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法: 由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层.所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层.在一楼的时候,每个乘客选择自己的目

结对作业——电梯调度算法的实现与测试之需求分析与算法设计

结队成员:李宝全 & 黄一凡 李保全的博客首页:http://www.cnblogs.com/libaoquan/ cooding链接:https://coding.net/u/2013040101159/p/4elevator/git 4路电梯调度算法展示:http://ele.libq.ren/ 结对编程题目:电梯调度 现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示: 电梯编号 可服务楼层 最大乘客数量 最大载重量 1 全部楼层 10 800KG 2 单层 10 8

编程之美-小飞的电梯调度算法另一种解

放暑假了,在家闲着也是闲着,翻一翻去年买的<编程之美>这本书,有一些收获.昨天看到小飞的电梯调度算法这个问题,思考一番,得到了和书中给出的标准答案不一样的解决方法. 一.问题描述: 亚洲微软研究院所在的希格玛大厦一共有6部电梯.在高峰时间,每层都有人上下,电梯在每层都停.实习生小飞常常会被每层都停的电梯弄得很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层.所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客

第1章 游戏之乐——小飞的电梯调度算法

小飞的电梯调度算法 1. 问题描述: 亚洲微软研究院所在的希格玛大厦一共有6部电梯.在高峰时间,每层都有人上下,电梯每层都停.实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层.所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层.在一楼的时候,每个乘客选择自己的目的层,电梯则计算出应停的楼层. 问:电梯停在哪一层楼,能够保证这次乘坐电梯的所有乘客

结对编程--电梯调度算法

1.需求分析: 实现电梯调度算法,预先输入乘坐电梯人数.每个人的起始楼层和到达楼层以及当前电梯所在楼层,电梯会根据算法依次将所有人员接入电梯并送至其重点楼层. 2.代码截图 3.约定的规范 使用Tab制表符 每行不超过100 {}另起一行 规范示例: 4.记录时间 命题讨论:1h 思路分析:1h 代码编写:24h 程序测试:2h 博客记录:1h 5.心得体会 结对编程可以通过自己的parterner来发现自己之前的不足,矫正错误 通过电梯调度算法,复习了数据结构和C语言的指针,结构体等

结对编程之电梯调度算法

   电梯调度结对编程                             1.题目:设计一个电梯调度算法,实现基本的电梯调度功能,要求有四部电梯,每部电梯21层,并且具有重量检验算法. 2.设计前的准备:确定了结对之后,我们首先对设计中可能遇到的问题进行了大体的分析与讨论,确定了编程的方向(java语言)并且约定了一些编程规范,语法规范为使用eclipse中的format规范代码,其他可能遇到的编程问题会在开发中随时交流.接着我们对题目进行了更深入的分析,考虑到电梯运行时的各种情况并发表自

结队作业之电梯调度算法

结队成员:沈聪和......习志敏,没错,就是我俩. 习志敏博客链接:http://www.cnblogs.com/xizhimin/ 沈聪博客链接:http://www.cnblogs.com/congshen/ 前言 非常开心能有这次学习编程的机会,也很感谢学校能给我们这样一个编程的环境,从进学校开始,几乎每一次编程都是需要别人协助和指导,现在有这个机会得以锻炼锻炼,感觉还不错,而且这次能有一个搭档真的是很高兴,这次结队编程中,我很荣幸能够和习志敏成为一队,刚开始,我们对对方都不是特别了解,

普通电梯调度算法

普通电梯调度算法(编辑中) GitHub: https://github.com/StolfdaInuit/object-oriented 编写程序的代码行数 调试的bug数 完成该次作业总耗时 270行 0个 0.1h 文件清单 ...\elevator-scheduling(normal) // 策略:估计当前 向上.向下.停靠 三类行动的耗时,采用预估耗时最少的 -> main.cpp 优化过程 问题给出的要求是实现一个正常的电梯调度算法,因此在之前代码的基础上稍微改改就行了..目前在尝试