• 电梯2


    一、题目和要求

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

    二、设计思路

         1、枚举法不难,但是复杂度高,不好不好

         2、老师说的方法甚好

              i-1层:N1人   

              i层:N2人       Y:乘客总共需要爬的楼数

              i+1层:N3人

      如果电梯停在i层,爬楼Y层

         如果电梯改停i-1层,爬楼 就是Y+N2+N3-N1

        如果电梯停在i+1层,爬楼  就是Y+N2+N1-N3

    当N2+N3>N1时,i比i-1层好

    当N2+N1>N3时,i比i+1层好

    三、代码

    #include <iostream>
    using namespace std;
    void louti(int A[]);
    int main()
    {
         int N = 18;
         int renshu[20];
         int a,b;//所停层数,最小爬楼数
         int N1,N2,N3;                        
         b = 1;                    
         for(int i=0;i<20;i++)
         {
             renshu[i]=0;
         }
         louti(renshu);
         N1 = N3 = a = 0;
         N2 = renshu[1];
         
         for( i = 2; i <= N; i++)
         {
              N3 += renshu[i];                
              a += renshu[i] * (i-1);            
         }
         for( i=2;i<=N;i++)
         {
              if(N1 + N2 < N3)
              {
                   b = i;                
                   a += (N1 + N2 - N3);      
                   N1 += N2;                        
                   N2 = renshu[i];
                   N3 -= renshu[i];
              }
              else
              {
                   break;
              }
         }
         cout<<"所停楼层:"<<b<<endl;
         cout<<"最小楼层数:"<<a<<endl;
         return 0;
    }
    void louti(int A[])
    {
        int length;
        cout<<"请输入一层时电梯内人数:";
        cin>>length;
        int *a=new int[length];
        cout<<"请输入每个人所按的楼梯层数:";
        for(int i=0;i<length;i++)
        {
                cin>>a[i];
                A[a[i]]=A[a[i]]+1;
        }
    }
    

     四、实验截图

    五、总结

    总结一点,就是遇到问题,先去想解题思路,不要去想怎么编代码,类似问题,先找出一般规律,利用数学问题求解,找到具体解决方法。

  • 相关阅读:
    webkit 技术内幕 笔记 二
    webkit 技术内幕 笔记 一
    javascript 权威指南1
    正则
    react-virtualized
    移动端字体
    vue 学习3
    vue 学习2
    vue 学习1
    移动端display:flex
  • 原文地址:https://www.cnblogs.com/tangxiandi/p/4438828.html
Copyright © 2020-2023  润新知