电梯调度

一、题目要求

基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信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,后来发现忘了写绝对值了,后来我通过查资料解决了这个问题。

posted @ 2015-04-18 21:51  幽梦  阅读(327)  评论(0编辑  收藏  举报