0

语言是 javascript,但我认为这个问题与语言无关。这是问题所在:

问题

两名服务员为餐桌服务。一个是打扫卫生,一个是放新盘子。服务员必须确保他不会收拾刚放好的盘子。存在这样的要求,即服务员和服务员在小工作单元中执行他们的任务,并且为了让顾客看到他们的食物正在快速送达,服务员必须与服务员同时工作。这是一个低档的自助餐,所以吃完/带走的菜可以再带回来(有人再来点煎饼吗?)

脚步:

  1. 服务生来了,从桌上的 15 道菜中挑了 5 道菜,带到厨房。
  2. 服务器来了,在他的订单上放下了 35 道菜中的 5 道新菜。情侣菜(煎饼和蓝莓)和刚拿走的一样,其余都是新菜。
  3. 这一直持续到 busboy 和 server 都完成。胸围男孩有 15 个盘子需要 3 次处理。服务器有 35 道菜可以带来 7 道菜。
  4. 之后桌子上剩下什么 35 个盘子。

限制:

  • 服务器必须以最接近客户至上的方向工作。
  • 胸围男孩必须确保他不会拿走那两盘新鲜的煎饼和蓝莓,如果他在服务器放下新鲜的盘子后进来清理它们 - 就在旧盘子的上面,可能会发生这种情况。

在 javascript 中,我有一个清理 UI 的 setInterval(bust, 50) 函数和一个向 UI 添加新元素的 setInterval(serve, 50)。两个模拟线程同时工作,因为按顺序清理需要 10 秒,而服务它可能需要另外 20 秒。相反,我想让它看起来正在取得进展——尤其是在可见区域。上面提到的板块实际上是 html id,并且正在操作 DOM。我保留了我正在操作的项目的数组/哈希表。

我的算法是什么?

编辑:我记得在图形中,您通常会绘制到隐藏缓冲区,然后用隐藏缓冲区切换可见缓冲区。我不知道如何将这个概念应用于我的问题。这些是数千个 dom 元素,而不是像素。删除元素、丢弃它们并添加新元素可能代价高昂。

4

1 回答 1

0

这看起来像一个典型的有能力的车辆路径问题。在这个问题中,您有一个仓库、集装箱和卡车,并且想要找到为集装箱提供服务的最短路线,但每辆卡车只能携带 x 个集装箱。它是装箱问题和旅行推销员问题的结合。我认为你可以用厨房代替仓库,用服务员代替卡车,用盘子代替容器。

于 2012-10-12T21:57:58.120 回答