这是今天群里同学提出来的一个问题,非常有生产意义。大概是这样说的,我们有N个工位,M个工人,工位标有序号1,2,3,4...N. 每个工位上做的事情不一样,大家可以理解为前面的工位更有挑战或者单位时间内的回报越高。现在为了平衡这些工人,我们需要给一个分配算法。第一次分配的时候如果分配到了P的工位上,下一次分配的时候会出现在P-1的工位上。请实现一个算法。
提出问题:
1. 第一次分配的时候,我们优先从1开始分配,还是从N开始分配
2. 假设某一次分配的时候,工人已经出现在1的位置了,下次他去哪?
3. 假设M > N 时,我们用什么样的策略,从 1 工位下来的工人接着上工位 N 吗?
4. 假设 M > N 时, 我们怎么保证 M-N的工人也会分配到工位呢?
寻找答案:
如果大家真的理解题目本意的话,应该有答案了。我们直接给出解决方法啊。利用两个队列:
1. 队列一: 长度为N, 代表工位, 每分配一次,会有两个操作, 出队列, 入队列
2. 队列二: 长度为M (其实M-N也可以的),代表剩余的工人。每分配一次,会有两个操作, 入队列,出队列
具体步骤:
A: 我们先初始化