鉴于以下问题:
we have participants and we want to place them in an auditorium, where
each of the participants has a list of the people that he/she don't
want to sit behind that person , or at the same line of that person .
We do not have any restriction regarding the number of lines in the auditorium ,or the number of seats.
我需要写一个每个人都很开心的算法。
我在思考拓扑排序,我们将问题抛到图论领域:
*在图G =(V,E)上运行拓扑排序。
*如果有问题的那种 - 返回'是',否则返回'否'。
该算法将如下工作:
在每一行中,我们只放置一个参与者,第一行包含第一个参与者(他将成为TopSort中的第一个顶点),第二行包含第二个参与者等。
如果participant A
不想坐在(或同一行)participant B
后面,那么我们会有一个从A到B的有向边,表示A位于B
后面。< / p>
当A
不想与B
(或在他身后)位于同一行时,我的问题就开始了,B
不想坐在后面A
(或在同一行)。
我很感激你的帮助, 的问候,罗恩
答案 0 :(得分:2)
显然,如果存在循环依赖关系(A
想要在B
之前坐下,并且B
想要在A
之前坐下),则问题无法解决。拓扑排序似乎是解决问题的一种方法。