双队列灵活运用解决实际问题(二十八)

这是今天群里同学提出来的一个问题,非常有生产意义。大概是这样说的,我们有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也可以的),代表剩余的工人。每分配一次,会有两个操作, 入队列,出队列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值