电梯个人

一、题目

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

二、设计思路

基础大楼共有18层,则电梯要求停在2-18层,一部电梯每次最多乘15人。电梯将会根据不同楼层被按的次数,计算在停在2~18各楼层情况下,电梯乘客的上下楼总和,并比较大小,取最小值。

三、总结

老师提供的思路有点难以理解,个人还是偏向于自己的思路。便于计算机运行的思路,不是便于人的思路。

四、代码

#include<iostream.h>

#include<math.h>

int lc[20]={0};

int sum[15]={0};

int Min(int a[])

{

         int min=a[2];

         int i;

         int j=2;

         for(i=3;i<=18;i++)

         {

                   if(min>a[i])

                   {

                            min=a[i];

                            j=i;

                   }

         }

         return j;

}

int main()

{

         int n;

         int m;

         int i;

         int j;

         cout<<"乘坐电梯的人数:"<<endl;

         cin>>n;

         cout<<"请依次输入要去的楼层:";

         for(i=0;i<n;i++)

         {

                   cin>>m;           

                   lc[m]++;

         }

         for(i=2;i<=18;i++)

         {

                   for(j=2;j<=18;j++)

                   {

                            if(lc[j]==0)

                                     continue;

                            else

                                     sum[i]=sum[i]+abs(j-i)*lc[j];

                   }

         }

         cout<<"电梯应停在"<<Min(sum)<<"层"<<endl;

         return 0;

}

 

五、截图

原文地址:https://www.cnblogs.com/lsfh/p/4440182.html