我正在尝试解决以下问题:
首席执行官每天都在不断检查其员工(对于 例如,轮班开始后的分钟数>{5, 35, 120..}(。 计算员工应该什么时候工作,以便每次CEO检查他们时,他们都在工作。他们的工作需要 3 分钟 完成,每次启动时又增加 3 分钟 再次工作(第一次需要3分钟,第二次需要6分钟 分钟,第三次需要9分钟..(。
这是我的伪代码算法:
int time = 2
for: every CEOcheckTime in 0 to CEOcheckTime.length
add (CEOcheckTimes-time) to results
time = time + 2
忽略边缘情况,即首席执行官更快地检查员工是否可以完成工作,我的算法是否正确?谢谢!
忽略"边缘情况"似乎很好,除了您的时间根据规范增加了 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
编辑:我假设如果工作在检查的同时开始/结束,这算作工作。