• 电梯优解


    一、题目

         石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信1201-1班的张一东觉得在每层都停觉得不耐烦。由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。

    二、设计思想

         假设电梯现在停在第i层,i层以下的人有N1个,i层有N2个,i层以上的人有N3个,当前需要走的楼梯数为Y。当电梯再往上走一层时,i层及i层以下的人一共需要多走N1+N2步,而i层以上的人则一共少走了N3步,所以当N1+N2<N3时,电梯应该继续往上走。

    三、源代码

     #include<iostream.h>
     int main()
     {
         int floor[19]={0};
         int i,a;
         cout<<"输入要去的层数(以0结束):";
         while(a!=0)
         {
             cin>>a;
             if(a!=0)
             {
                 while(a>18||a<0)
                 {
                     cout<<"出错,重输:";
                     cin>>a;
                 }
                 floor[a]=floor[a]+1;
             }
    
         }
         int downfloor= 0, equalfloor = floor[0], upfloor= 0;
         for (i = 1; i < 19; i++)
         {
             upfloor+= floor[i];
         }
         for(i = 1; i <19; i++)
         {
            equalfloor= floor[i];
            downfloor+= floor[i - 1];
            upfloor= upfloor - equalfloor;
            if (downfloor + equalfloor >= upfloor)
            {
                cout<<"电梯应该停在第"<<i<<""<<endl;
                break;
            }
         }
        return 0;
    }

    四、运行截图

    五、总结

         对于优化其实刚拿到题目时是没有想过的,当时只是用了笨方法实现了,考虑的不完善。之后老师介绍了目前这种思路。于是

    优化时用了此方法。这种方法就是一个相对的算法。与老师所说不同的是仅比较当层与上一层。如果不符合,电梯继续上行。这次

    实验让我对算法还是颇感兴趣。比笨方法实现起来简单的多。

  • 相关阅读:
    Training Deep Neural Networks
    RNN and LSTM saliency Predection Scene Label
    c++通过类名动态创建对象
    C++初级 入门笔记学习(一)
    机器学习日报
    工作常用工具使用手册
    转:python中对list去重的多种方法
    转:python list排序的两种方法及实例讲解
    转:python dict按照value 排序
    mysql计算时间差函数
  • 原文地址:https://www.cnblogs.com/wang321/p/4440318.html
Copyright © 2020-2023  润新知