码迷,mamicode.com
首页 > 其他好文 > 详细

课堂练习-电梯调度

时间:2015-04-19 17:49:32      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

1.题目。

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

2.设计思想。

  假设    3层   4层   5层   6层

            4人   3人   4人    2人

如果电梯在三层停,则有9个人爬楼;如果电梯在4层停,与在3层楼停做比较,则有9个人少爬一层楼,4个人多爬一层楼,说明总的来说所有人爬的楼梯数减少了;

如果在5层停,与在4层楼停做比较,则有6个人少爬一层楼,7个人多爬一层楼,说明总的来说所有人爬的楼梯数增加了;

可以从上面推断出来,只要电梯停的楼层下去的人和在想去这个楼层下面楼层的人数的和大于总人数的一半时,该楼层为电梯停的最优楼层。

3.代码设计。

#include<iostream.h>
int main()
{
    for(int i=0;;i++)
    {
        int dianti[18]={0},k,m=0,sum=0;
        cout<<"请输入坐电梯的人分别要去的楼层。(输入0结束)"<<endl;
        for(i=0;;i++)
        {
            cin>>k;
            if(k!=0)
            {
                dianti[k-1]=dianti[k-1]+1;
                m=m+1;
            }
            else
                break;
        }
        sum=dianti[0];
        for(i=1;;i++)
        {
            if(sum>m/2)
            {
                cout<<"电梯停的最佳楼层为:"<<i<<endl;
                break;
            }
            else
                sum=sum+dianti[i];
        }
    }
    return 0;
}

4.截图。

技术分享

5.个人总结。

有的一些编程问题可以用数学方法去计算推倒出一些相关规律,这样可以使得比较复杂的问题简单化,从而使得算法更加简单。

课堂练习-电梯调度

标签:

原文地址:http://www.cnblogs.com/nulidexuezha/p/4439483.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!