日期:2014-05-16  浏览次数:20961 次

【求一个算法】不知道怎么称呼这种算法,感觉有点很复杂的样子
打个比方,我现在数据库里有1000个用户。先读取数据库里的所有用户,读取到在线500个用户。

生成在线用户列表:userId(1)..........userId(500)

其中userId(y)发出了一个指令,保存到数据库。系统自动延时0.3-3个小时公布这个指令,然后随机读取userId(x)去执行这个指令,执行完成后执行结果保存到数据库

如果72小时内userId(y)发出了6个指令,userId(x)将得不到userId(y)之后发出的指令,也就是说72小时内userId(x)只能执行一次userId(y)发出的指令。

如果userId(x)执行过userId(y)的指令,那么72小时内userId(x)同样也发出了一个指令,那么就自动忽略掉userId(y),让userId(y)得不到userId(x)发出的指令。


这样的算法,应该怎么写? 哪位大神给点思路或者给个示例代码? 另外请教一下,这种算法应该叫什么?

------解决方案--------------------
就是建立一个执行指令表,假定 table1,保存
发出指令用户(userId(y))、执行指令用户(userId(x))、执行指令时间

每个用户发出指令后,0.3-3小时后,查找执行指令的用户,其用户范围为:当前在线用户中除去自己、除去table1表中执行指令用户=自己并且(当前时间-执行指令时间)<72小时 记录行中的 发出指令用户

随机找出一个