需要帮助找到解决问题的逻辑解决方案

时间:2019-07-07 22:18:34

标签: c algorithm timestamp

鉴于变量“点”在变量“玩家”每次收集点时都会增加,我如何在逻辑上找到一种奖励用户在5分钟内发现30点的奖励方法?没有倒数计时器。 例如,玩家可能有4分,但如果他有34分,那么5分钟之内也算在内。 我当时在考虑使用时间戳,但我真的不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

您所说的是“ sliding window”。您的窗口是基于时间的。记录每个点的时间戳,并在这些时间戳上滑动窗口。您需要选择一个时间增量来滑动窗口。

在每个“幻灯片”上,数出您的分数。当您获得所需的金额时,“奖励您的用户”。 “在每张幻灯片上”表示您需要某种计时器,该计时器每次都调用一个函数来评估结果并执行所需的操作。

例如,将窗口设置为 5分钟,将幻灯片设置为 1秒不要保留一个名为 points 的变量。相反,只需创建一个时间戳数组。每个计时器滴答声(在这种情况下为1秒),计算与 t-5分钟 t现在匹配的时间戳数;如果有30个或更多,则您已达到阈值,可以奖励您的超快用户。如果需要实际值,可能是 34 ,那么,您只需计算出它即可使用。

可能存在一些优化方法。我提供了幼稚的方法。可以删除超出范围的时间戳以节省空间。

如果有“要进入窗口的点”计数,那么只需将它们加到总和中即可。