gpt4 book ai didi

c# - 两组数据的交集

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:51 24 4
gpt4 key购买 nike

在过去的一个半星期里,我一直在为这个算法绞尽脑汁,但我无法让它发挥作用。

基本上我有一个时间表(我知道“边界”的时间值)我有红色部分(人员进出工作场所的事件)。我想知道人们在他们的日程安排内在工作场所度过的时间,我不在乎他们是在工作之前还是之后,或者在午休时间。

你有什么建议吗?关于我可以在这里应用的数学理论或规则?或您看到的类似问题可以指出我吗?我一直很难找到解决方案。任何帮助将不胜感激。

Picture

例如:

时间表:
上午 7:30(开始)中午 12:00(午休)
下午 1:30(午餐休息结束)下午 5:00(工作日结束)

全天人员流动:
进场:早上 6 点 50 分,出场:早上 6 点 55 分
进场:上午 7:00,出场:上午 11:45
进场:下午 1 点 45 分,出场:下午 5 点 05 分

因此,我的预期输出时间跨度为:7:30(它忽略了工作时间表之外的工作时间)

最佳答案

我会将其视为状态机问题。有四种状态:S+W+、S-W+、S+W-、S-W-。预定时间对应于 S+ 状态, worker 在场对应于 W+ 状态。目标是将 S+W+ 中的时间添加到交点时间。

有效的转换是:

S+W+ End of schedule -> S-W+
S+W+ Worker leaves -> S+W-
S-W+ Start of schedule -> S+W+
S-W+ Worker leaves -> S-W-
S+W- End of schedule -> S-W-
S+W- Worker arrives -> S+W+
S-W- Start of schedule -> S+W-
S-W+ Worker arrives -> S-W+

按时间顺序处理事件,从状态 S-W- 开始。如果两个事件同时发生,则按任一顺序处理。

在过渡到 S+W+ 时,注意时间。在从 S+W+ 转换出来时,从转换时间减去最后记录的时间,并将结果添加到交叉点时间。

关于c# - 两组数据的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17910198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com