【发布时间】:2013-01-03 16:51:08
【问题描述】:
您之前可能看过订购脑筋急转弯:
在最新一轮的 BrainBashers 铁人三项赛中,Keith 是 第四。阿德里安不是最年长的,但比邓肯年长, 不是第二个。年龄比最小的那个孩子完成了 第二。获得第三名的孩子比孩子大 谁先完成。比利比完成学业的孩子还小 第三名。你能确定谁在哪里完成并放置 孩子按年龄排序? [Source]
我正在寻找一种算法方法来解决似乎非常相似的问题。
我有一组对象,我想根据将对象相互关联的规则对其进行排序。对于给定的一组规则,可能有多个解决方案。在一个有效的解决方案中,所有的规则都得到了满足。一组规则也可能没有有效的解决方案。
示例:
对象:A, B, C, D, E, and F
规则:
- C > A
- C
- F
- A > F
- E > F
- D > E
一种可能的解决方案:
F A C E D B
请注意,对象 B 与任何其他对象都不相关,因此它出现在序列中的哪个位置并不重要。
这肯定是以前做过的。谁能指出我正确的方向?我最终将在 Java 中执行这种排序。
【问题讨论】:
-
那里有很多 CSP(约束满足问题)求解器。 en.wikipedia.org/wiki/Constraint_satisfaction_problem
-
我解决了您在阅读问题时引用的难题.. 现在您有足够的答案.. 也许我太慢了。或者其他人没有解开谜题! :-)