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