标签:
一、题目要求
基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信1201-1班的张一东觉得在每层都停觉得不耐烦。
由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。
问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。
二、设计思路
如果采用遍历的方法,这道题目还是比较容易实现的,这样它的时间复杂度就是N^2。
但是由于这是一个算法优化题所以这样设计:
N0是i-1楼人数,N1是i楼人数,N2是i+1楼人数
Y0是停在i-1楼所有人爬楼数,Y1是停在i楼所有人爬楼数,Y2是停在i+1楼所有人爬楼数,三者之间有这样的关系:
Y0=Y1-(N0-N1-N2);Y2=Y1-(N2-N0-N1)。
当N0>N1+N2时,Y0<Y1,再比较N0-N1-N2和N2-N0-N1的大小,若前者大则停在i-1层;
当N2>N0+N1时,Y0<Y1,再比较N0-N1-N2和N2-N0-N1的大小,若后者大则停在i+1层;
否则就停在第i层。
三、总结
采用合适的算法可以设计出更高效的程序,单单能实现要求不足以成为一个优秀的程序员,还需努力。
标签:
原文地址:http://www.cnblogs.com/zglsh/p/4439477.html