作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在思考一个编程问题。如果我们有 n 个列表,我们想要输出 n 个不同元素(每个元素都来自一个不同列表)。我怀疑这可以通过某种回溯算法来解决,但我不知道如何正确实现它。
最佳答案
尽管您可以按照评论中的建议通过回溯来解决此问题,但更有效的解决方案是使用最大流算法。
将其建模为图形。一个 Source,一个 Sink,每个不同元素的节点和每个列表的节点。您将源连接到每个不同的元素。每个元素都连接到它所在的每个列表,列表连接到一个汇节点。每条边的容量为 1。
最大流是您可以从不同列表中选择的不同元素的最大数量。
https://en.wikipedia.org/wiki/Maximum_flow_problem
https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm
关于algorithm - 从 n 个列表中选择 n 个唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47954782/
我是一名优秀的程序员,十分优秀!