第二次作业-编程

电梯调度问题

  想不到更优的算法+数据小=穷竭搜索。GitHub存储库

  最开始想用5个for语句把电梯移动的地点进行全排列,发现接到人以后电梯又会新增新的要停靠的楼层。然后想到用深搜。

思路

  开始时把5人原来的楼层设置为目标楼层。

  从当前楼层开始:选择一个目标楼层(可以是当前楼层),去目标楼层接人或者放人。

     如果是放人:计算移动到目标楼层的耗时,记录下放下的人出电梯的时刻。更新时刻再次移动。

     如果是接人:计算移动到目标楼层的耗时,新增一个目标楼层,更新时刻(选择请求出现时刻和当前时候更晚的那个),再次移动。

  如此重复,直到所有目标楼层都到达过。判断耗时。更新最小耗时和移动方案。

  这个算法时间复杂度非常高。

测试数据

0 1 0
0 2 0
0 4 0
0 6 0
0 8 0
1 2 3
4 5 6
7 8 9
0 1 2
3 4 5
10 1 0
7 8 0
9 4 7
100 4 5
6 0 4
32 6 4
7 9 0
4 5 0
1000 6 5
1 2 3
0 1 0
5 5 6
7 6 8
3 1 4
7 9 7
0 0 1

 手算了第一组数据,是对的。为什么不算别的组?

代码行数bug数耗时
   84       >=10  >=5h

Pintia小作业

转载于:https://www.cnblogs.com/Ike-shadow/p/8442614.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值