座位排队问题

Practise_Think 2011-10-20 04:19:35
描述:

有 m (m>0) 个餐桌,一个餐桌只能坐一个人,现在有多组人排队用餐,每组人数不固定,但不多于餐桌数,且每个组员都分配在一固定的不同的餐桌前排队,排队是以组为单位,而不是个人,也就是说该组的组员要么就一起用餐,要么就一起不用餐,即使该组某一组员所在餐桌队列中轮到他,但其所在的组只要有一成员还没轮到也不能独自用餐。正在排队中的组可以和前后非正在用餐的组交换在队列中的位置。注意,有可能多个组能同时用餐(例如:5个餐桌,A组2个人,B组3个人,他们各人都在不同餐桌队列上,那么就有可能A和B组能同一时间用餐)。

问题:
快速地查询出某组在队列的顺序位置,包括在组位置前后交换后也能快速查询到

请各位讨论一下算法
...全文
352 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chhch11111 2011-10-21
  • 打赏
  • 举报
回复
按楼主的描述根本不需要按餐桌来排队
只需统计空闲的餐桌数量,当空闲数大于等于队首的组的人数时,此组进场用餐
这样多队列的问题就变成单队列了
Practise_Think 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sssssjjjj 的回复:]

会死锁的吧
[/Quote]

不会死锁的,因为是以组为单位进行排队而已,一个组用完就轮到下一组,只是用餐时,要全组人轮到才能用餐。

举例说有3张餐桌分别是: T1,T2,T3
有3组人队顺序分别是: A组(1人) B组(2人) C组(3人)

假如他们对应餐桌的队列其中一种情况为:
T1 a1 b1 c3
T2 c2
T3 b2 c1

由此可见虽然 b2 和 c2 这两个组员前面都没人用餐,但因为排在他们的组还没用完餐,所以b2和c2不能独自用餐,直到他们所在的整组人都可以用餐为止
Practise_Think 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bingshanzhiling 的回复:]

问题:每次进去最多组吗?

比如10个桌子,是优先进去一个组(该组共8人,占据1到8号),还是先进去另外两组(一组1到4,另一组5到10)???
[/Quote]

不好意思,没说清楚。

排队的组数不限,按先来先到的原则,但排队过程中可以申请与相邻的前后两组进行互换位置。 而组里排队的人在开始排队时是随机选餐桌来排队的,但一旦选中自己的餐桌后就不能更改餐桌号
bingshanzhiling 2011-10-20
  • 打赏
  • 举报
回复
问题:每次进去最多组吗?

比如10个桌子,是优先进去一个组(该组共8人,占据1到8号),还是先进去另外两组(一组1到4,另一组5到10)???
sssssjjjj 2011-10-20
  • 打赏
  • 举报
回复
会死锁的吧

33,026

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧