电梯调度
一、题目要求
基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信1201-1班的张一东觉得在每层都停觉得不耐烦。
由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。
问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。
二、设计思想遍历从1层到18层,计算电梯在每一层停后乘客爬楼梯的层数,然后比较层数,找到最小的层数,求出此时电梯停在几层即可。
三、源代码
1 // 信1201-2班 司新红 2 #include "stdafx.h" 3 #include "iostream" 4 using namespace std; 5 #include "math.h" 6 7 int main() 8 { 9 int n;//上电梯的人数 10 int people[20]; 11 int sum[20];//计算所走的楼层数 12 cout<<"请输入有多少人坐电梯:"<<endl; 13 cin>>n; 14 for(int i=0;i<n;i++) 15 { 16 cout<<"请输入要到的楼层:"<<endl; 17 cin>>people[i]; 18 } 19 for(int i=0;i<18;i++) 20 { 21 int s=0; 22 for(int j=0;j<n;j++) 23 { 24 int b= 25 s=s+abs(people[j]-(i+1)); 26 } 27 sum[i]=s; 28 } 29 int a=0; 30 int max=sum[0]; 31 for(int i=0;i<18;i++) 32 { 33 if(sum[i]<sum[0]) 34 { 35 sum[0]=sum[i]; 36 a=i+1; 37 } 38 } 39 cout<<"电梯应停留的层数为:"<<a<<endl; 40 return 0; 41 }
四、运行结果
五、心得体会
在编写程序的时候遇到了一个困难,就是编译没有错但是无论怎样输入,输入结果都是18,后来发现忘了写绝对值了,后来我通过查资料解决了这个问题。