我正在尝试解决以下问题:
CEO每天都要定期检查员工(对于 一个例子,开始轮班后的分钟数> {5,35, 120 ..})。计算员工应在何时工作,以便首席执行官每次检查员工时都在工作。他们的工作需要3分钟 完成,每次启动又增加3分钟 再次工作(第一次需要3分钟,第二次需要6分钟 分钟,第三次需要9分钟。..
这是我的伪代码算法:
int time = 2
for: every CEOcheckTime in 0 to CEOcheckTime.length
add (CEOcheckTimes-time) to results
time = time + 2
忽略极端的情况,即CEO会尽快检查员工是否可以完成工作,我的算法正确吗?谢谢!
答案 0 :(得分:0)
忽略“边缘情况”似乎很好,除了按照规范将时间增加2而不是3。
int time = 3
for: every CEOcheckTime in CEOcheckTimes
add (CEOcheckTimes-time) to results
time = time + 3
这里可以使用类似的及时方法,这也可以解决您的极端情况。
for: every CEOcheckTime in CEOcheckTimes
if exists(time):
if last(results) + time < CEOcheckTime:
add (CEOcheckTimes) to results
time = time + 3
else:
add (CEOcheckTimes) to results
time = 3
编辑:我假设如果工作在开始/结束的同时进行检查,则视为工作。