【发布时间】:2021-01-14 14:35:55
【问题描述】:
我的任务是根据 N 位客人对其他客人的好恶来确定我是否可以让 N 位客人坐在圆桌旁。座位安排有两个要求:
- 不应让所有客人坐在他们不喜欢的客人旁边
- 所有客人都应坐在他们喜欢的客人旁边
输入: likeSet = { guest_id: [其他客人列表] }, dislikeSet = { guest_id: [其他客人名单] }
输出:布尔值
蛮力解决方案将从 0 号客人开始并检查所有可能的座位,但这绝对是低效的。
这似乎是二分问题的一种变体,但我不知道从哪里开始。
任何意见将不胜感激!
【问题讨论】:
-
盲目猜测:1)构建(有向?)图,其中顶点 - 是客人,边 - 如果客人喜欢另一个。 2) 找到哈密顿循环
-
@user3386109 我认为这两个要求是互斥的,因为好处不一定是相互的。例如,如果客人 A 喜欢客人 B,但客人 B 不喜欢客人 A,则他们不应坐在一起。如果没有要求 1,结果将包括 A 和 B 坐在一起的情况。
标签: algorithm math data-structures graph computer-science