贪婪的算法正确性



我正在尝试解决以下问题:

首席执行官每天都在不断检查其员工(对于 例如,轮班开始后的分钟数>{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

编辑:我假设如果工作在检查的同时开始/结束,这算作工作。

相关内容

  • 没有找到相关文章

最新更新