电梯最优问题

一、题目要求

石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信1201-1班的张一东觉得在每层都停觉得不耐烦。

由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。

问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。

二、设计思想 设第一个人按l1楼层,第二个人按l2楼层……第n个人按ln楼层。设最优的层数为x

三、设计思路一: 求绝对值得最小值 min=|l1-x|+|l2-x|+l3_x|……|ln-x|

  设计思路二: 求方差的最小值 min=(l1-x)^2+(l2-x)^2+(l3-x)^2+……(ln-x)^2 min最小时,x取得最优楼层。min默认为0。 即x=(-b(+/-)sqrt(b^2-4ac))/2a 将求得的结果进行取整和取舍,x大于最小楼层,小于最大楼层

   设计思路三: 假设电梯停在第i层,显然我们可以计算出所有乘客总共要爬的层数Y。如果有N1个乘客目的楼层在i层以下,有N2个乘客在i层,还有N3个乘客在第i层以上。这个时候,如果电梯改停在第i-1层,所有目的地在i层以上的乘客都要多爬一层,总共需要N2+N3层,而所有目的地在第i-1层以下的乘客都可以少爬一层,总共少爬N1层。所以乘客总共需要爬Y-(N1-N2-N3) 反之,如果电梯停在i+1层,那么乘客总共需要爬Y+(N1+N2-N3)层。 由此可知: 当N1>N2+N3时,电梯停在i-1层好,乘客少走N1-N2-N3层 当N1+N2<N3时,电梯停在i+1层好 其他情况停在i层好 我们可以从第一层开始考虑

四、源代码

#include <iostream>
using namespace std;
int Person[] = { 1, 2, 5, 3, 5 };
int TargetFloor = 1;
int MinFloor = 0;
int N1;//第i层以下的总乘客数
int N2;//第i层的乘客数
int N3;//第i层以上的总乘客数
int i;
int N = 5;
void Min1()
{
    for (N1 = 0, N2 = Person[N - 1], N3 = 0, i = N - 1; i >= 1; i--)
    {
        N1 += Person[i - 1];
        MinFloor += Person[i - 1] * (N - i);
    }
    for (int j = N - 1; j >= 1; j--)
    {
        if (N1 > N2 + N3)
        {
            TargetFloor = j;
            MinFloor -= (N1 - N2 - N3);
            N3 += N2;
            N2 = Person[j - 1];
            N1 -= Person[j - 1];
        }
        else
            break;
    }
    cout << "应该停在: " << endl;
    cout << TargetFloor << " Floor" << endl;
    cout << "最小楼层数: " << endl;
    cout << MinFloor << endl;
}
int main()
{
    Min1();
    system("pause");
    return 0;
}

五 实验截图

六 实验总结

通过本次实验,深刻体会到了将复杂问题分化的重要性,能够最快的帮助我们找到思路,解决问题。

  

时间: 2024-10-13 13:37:08

电梯最优问题的相关文章

4月17号周五课堂练习:电梯最优问题

一.题目要求 石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停.信1201-1班的张一东觉得在每层都停觉得不耐烦. 由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层.在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层. 问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少. 二.设计思想设第一个人按l1楼层,第二个人按l2楼层……第n个人按ln楼层.设最优的层数为x设计思路一:求绝对值得最小值min=|l1-x|+|l2-

课堂练习之电梯调度

一.题目:电梯调度 二.要求 1.在一楼,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层 2.电梯停在哪一楼层,能够保证乘坐电梯的所有乘客爬楼梯的层数之和最少 三.解题思路 假设电梯停在i层,我们可以计算出所有乘客总共需要爬楼梯的层数Y. 假设有N1个乘客在i层楼以下,N2个乘客在第i层楼,还有N3个乘客在第i层楼以上. 这个时候,如果电梯改停在i-1层,所有目的地在第i层及以上的乘客都需要多爬一层,即N2+N3层,而所有目的地在i-1层及以下的乘客可以少爬一层,总共可以少爬N1层. 因此

结对编程————电梯调度

作业内容:电梯调度 现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示: 电梯编号 可服务楼层 最大乘客数量 最大载重量 1 全部楼层 10 800 kg 2 单层 10 800 kg 3 双层 20 1600 kg 4 全部楼层 20 2000 kg 其使用规定如下: 1.楼层号为0~20,其中0号为地下一层: 2.有楼层限制的电梯不在响应楼层停靠,如单双层: 3.所有电梯采用统一按钮控制 请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了. 这次作业是结对

电梯优解

一.题目 石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停.信1201-1班的张一东觉得在每层都停觉得不耐烦.由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层.在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层.问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少. 二.设计思想 假设电梯现在停在第i层,i层以下的人有N1个,i层有N2个,i层以上的人有N3个,当前需要走的楼梯数为Y.当电梯再往上走一层时,i层及i层以下的

电梯布线技巧让视频监控减轻干扰

现在电梯内都加装了监控摄像系统,但是因为电梯环境复杂致使很多视频监控图像在电梯井道环境中受到不同程度的干扰,监控效果并不是很好.针对这一问题,和联电子有关专业人士指出,如果在安装电梯时讲究一些布线技巧,是可以在很大程度上减轻此类干扰的.具体如下: 1.横向条纹上下滚动: 这种现象表现为条纹不停的上或下滚动,条纹比较宽.看起来是干扰,其实并不是外界电磁波所为,如果抛开条纹,图像是清晰的.这种现象基本占所为图像干扰的80%以上,这种现象可以肯定的说是接地电位的问题,是指前端设备的地与中控室之间的地存

20个Linux服务器性能调优技巧

Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要目的是高效处理非交互式进程,响应时间并不是那么重要,相反,能够长时间处理高负载才是最关键的. Linux高可用服务器集群解决方案让IT系统管理员可以从容应对许多常见的硬件和软件故障,允许多台计算机一起工作,为关键服务正常运行提供保障,系统管理员可以不中断服务执行维护和升级.Linux服务器有各种用途

Nginx下载服务生产服务器调优

一.内存调优 内核关于内存的选项都在/proc/sys/vm目录下. 1.pdflush,用于回写内存中的脏数据到硬盘.可以通过 /proc/sys/vm/vm.dirty_background_ratio调整. 首先查看这个值默认应该是10. [[email protected] ~]# cat /proc/sys/vm/dirty_background_ratio 10 这个值是一个阀值,说明如果内存中的脏数据达到系统总内存的10%时,那么pdflush进程就会启动,将内存中的脏数据写回硬盘

编程之美 1.8小飞的电梯调度算法

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

1.8 小飞的电梯调度算法

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