zoukankan      html  css  js  c++  java
  • 课堂练习-电梯调度

    1.题目  

    •石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信1201-1班的张一东觉得在每层都停觉得不耐烦。
    •由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。
    •问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。
    2.设计思想
      这道题目,采用最简单粗暴的遍历可以简单地求出来,如果要优化代码,可以先找出一个楼层x,然后比较X+1所需的爬楼数以及X-1的爬楼数,并且采用类似递归的思想来找到最佳的楼层数。至于起始值X可以用所有人要去的楼层数的平均值来代替,这样程序就可以在最快时间内获得最佳楼层数。
    3.源代码
     1 #include<iostream.h>
     2 #include <stdio.h>
     3 #include<math.h>
     4 void jisuan(int &y,int dian[],int n ,int ave)
     5 {
     6     int i=0;
     7     y=0;
     8     for(i=0;i<n;i++)
     9     {
    10         y=y+abs(dian[i]-ave);
    11     }
    12 }
    13 void main()
    14 {
    15     int dian[10]; //电梯只能容纳十个人
    16     int i,n=0,ave,sum=0,y=0,x=0,z=0;
    17     for(i=0;i<10;i++)
    18     {
    19         cout<<"请输入您要去的楼层(1-18),输入0表示电梯开始运行"<<endl;
    20         cin>>dian[i];
    21         if(dian[i]==0)
    22         {
    23             break;
    24         }
    25         else
    26         {
    27             sum=sum+dian[i];
    28             n++;
    29         }
    30     }
    31     ave=sum/n;
    32     jisuan(y,dian,n,ave);
    33     jisuan(x,dian,n,ave+1);
    34     jisuan(z,dian,n,ave-1);
    35     if(y>x)
    36     {
    37         while(1)
    38         {
    39             if(y>x)
    40             {
    41                 y=x;
    42                 ave=ave+1;
    43                 jisuan(y,dian,n,ave);
    44                 jisuan(x,dian,n,ave+1);
    45             }
    46             else
    47             {
    48                 break;}
    49         }
    50     }
    51     else
    52     {
    53         if(y>z)
    54         {
    55             while(1)
    56             {
    57                 if(y>z)
    58                 {
    59                     y=z;
    60                     ave=ave+1;
    61                     jisuan(y,dian,n,ave);
    62                     jisuan(z,dian,n,ave+1);
    63                 }
    64                 else
    65                 {
    66                     break;
    67                 }
    68             }
    69         }
    70     }
    71     cout<<"最佳楼层是:"<<ave<<endl<<"一共要爬的楼层数是:"<<y<<endl;
    72 }

    4.实验截图

    5.总结

    我们在设计程序时就应该考虑到代码的优化,为了使产品能够拥有更加的性能,我们应该在设计过程中就逐步对代码进行优化。

  • 相关阅读:
    沐风心扬C#编程速查系列之C#窗体渐显渐隐效果
    【原创】Linux学习笔记
    沐风心扬C#编程速查系列之快捷键的使用
    SQL_TABLE_VALUED_FUNCTION Angkor:
    Sql2008 System VIEW Angkor:
    关于[使用 WCF 测试客户端 (WcfTestClient.exe)] Angkor:
    Pivot PK Case Angkor:
    SQL_SCALAR_FUNCTION Angkor:
    Sql2008 SQL_STORED_PROCEDURE Angkor:
    EXTENDED_STORED_PROCEDURE Angkor:
  • 原文地址:https://www.cnblogs.com/boluoland/p/4439132.html
Copyright © 2011-2022 走看看