电梯最优问题

一、题目要求

石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信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;
}

五 实验截图

六 实验总结

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

         

转载于:https://www.cnblogs.com/tianma-0/p/4442947.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值