• 软件工程——电梯调度


    1、题目:

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

    2、设计思路:

    刚看到题目的时候首先想到的就是最笨的方法,记录所有登电梯乘客的楼层信息,从电梯停在最低的楼层开始一直计算到最高楼层,进而比较求出其中最优解,后来听了老师讲的优化方法,感觉不太理解,就用嘴笨的方法实现的。

    3、源代码:

     #include<iostream>
     #include<math.h>
     using  namespace std;
     int main()
     {
          int i,j;
          int m;
          int sum[18],summin;
          int max=2,min,n=0;
          int a[15]={0};
         cout<<"请输入乘电梯的总人数:"<<endl;
         cin>>n;
          cout<<"请分别输入每个人想要去的楼层号:"<<endl;
         for(i = 0;i < n;i++)
        {
              cin>>a[i];    
              if(a[i] <= 1)
            {
                  cout<<"输入错误,请重新输入!"<<"	";
                  cin>>a[i];    
             }
        }
          min = a[0];
          for(i = 0;i < n;i++)
        {
              if(a[i] > max)
                 {
                      max = a[i];
                 }    
                 if(a[i] <= min)
                 {
                     min = a[i];
                 }
         }
          for(j = min;j <= max;j++)
         {
              sum[j] = 0;
              for(i = 0;i < n;i++)
             {
                  sum[j] += abs(a[i] - j);
             }
         }
         summin = sum[min];
          m = min;
          for(j = min;j <= max;j++)
        {
              if(sum[j] < summin )
             {
                  summin = sum[j];
                  m = j;
             }
         }
          cout<<"电梯应停在第"<<m<<"层,此时爬楼总层数最少。"<<endl;
          return 0;
      }

    4、实验截图:

    5、实验总结:

           用的比较笨的方法,对于算法的优化方面还没有太好的想法,还要仔细的想一想上课老师讲的优化方案。

  • 相关阅读:
    内存分配问题
    C++ assert 的一点说明
    强大的stringstream
    C++中随机数
    C++ 中new
    C++ 中string 详解 转载自 博客园
    未命名名字空间
    使用ifstream和getline读取文件内容[c++]
    6.bootstrap练习笔记-缩略图和list-group
    3.bootstrap练习笔记-媒体内容
  • 原文地址:https://www.cnblogs.com/d12138/p/4442589.html
Copyright © 2020-2023  润新知