一个简单的电梯算法。


前几天去吃饭的时候碰到的电梯,一共五部电梯,在仪表盘上输入你要去那一层,他会自动分配好最优的电梯让乘客去那边等,感觉这个算法很有趣,索性写来玩玩=。=

·几个变量和相互之间的关系

电梯为:ElevatorX,楼层为:num1,乘客在human层乘坐电梯,要去往楼层:num2

也就是说,这里需要考虑3+X个变量,num1num2human都为大于0的整数,其他X个变量是电梯ElevatorX的数量使用numX表示所在楼层,各变量关系为: 0 < num2 <= num1, 0 < human <= num10 < numX <= num1

·基本的算法思想

在电梯为静态的情况下,选择电梯X去乘客所在楼层human,所选的电梯需要满足min[|numX- human|],说白了就是电梯和乘客之间的距离要是最小的;在电梯为动态的情况下,需要多考虑一个电梯是否是去乘客所在楼层的,如果结果为True,则继续采用静态的算法,如果结果为False,则将这部电梯排除,其余的继续按静态的算法。

emmm...由此引申出的问题是,如果所有电梯ElevatorX都是前往乘客或者远离乘客的呢?所有电梯前往乘客处无需考虑,可以认为是静态;所有电梯都都远离时,首先取得电梯ElevatorX要前往的楼层num2X,我们需要的电梯ElevatorX应该是运行的楼层最少的,即满足ElevatorX = min[|numX - num2X| + |human - num2X|]

  • 1 条回复 | 1 人参与
  • 这是我想到的需要注意的一些,可能考虑还不周全。代码还在写,写完再贴出来看看。大家就当乐呵看看吧=。=

添加一条新回复
登录 或者 注册 后发表回复