java旅客接口_GitHub - s1mplecc/checkin-scheduler: 使用 Java 实现的旅客人数分布预估与值机排班调度算法...

算法思路

![Screen Shot 2019-03-17 at 12.33.49 PM](/Users/s1mple/Desktop/Screen Shot 2019-03-17 at 12.33.49 PM.png)

计算 9 段和最大所需员工总人数,此人数必定满足上一休二且早中晚均衡的规则,生成该大小的 staff_list (LinkedList);

每天抽象成早、中、晚 3 个容器;staff_list 中从头开始遍历,如果当前 staff 满足早中晚均衡条件,则将该 staff 加入容器,并将该 staff 从链表中取出放到队尾;

Staff 维护一个早中晚阶段的标志(periodFlags,Period 的 Set)。每次任命前判断该员工的 periodFlags 是否包含了当前时段。如果包含,则不满足早中晚均衡,跳过该员工迭代下一个。如果不包含,则任命该员工,并在 periodFlag 中加入当前时段。如果 periodFlags 大小等于 3(即包含了早、中、晚三个时段),则将 periodFlags 清空。

建模

DailyPlan & Container

每日计划类,包含日期 date,以及抽象的早中晚 Container 内部类。

Container 类包含:

period,早中晚阶段的枚举类

number,该阶段需要的员工人数,如第2日早上需要5人

assignedStaffs,已经任命的员工集合

主要的任命逻辑在 assign(staffs) 方法中,步骤如下:

从 staffs 该 LinkedList 中从头遍历

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值