如何以最佳方式从列表中选择有效的整数对?

How to pick valid pairs of integers from a list optimally?

提问人:ABadHaiku 提问时间:10/19/2021 最后编辑:ABadHaiku 更新时间:10/19/2021 访问量:116

问:

总结

给定一个离散的整数列表,将尽可能多的整数分配给满足条件的唯一对。如何以最佳方式选择这些货币对,以便剩下最少的整数?

  • 我有一个从 1 到 ~1000000000 的 100 个整数列表。
  • 每个整数只能使用一次。
  • 整数被分配给对,比如说,.(a, b)2 * a != greatestCommonDenominator(a, a + b)
  • 该程序返回可以使用剩余的最少整数创建的对集。

问题:

  • 每个整数可以有多个有效对,但只能用它组成一个。
  • 列表没有排序,尽管它可以排序。
  • 列表中的整数不是唯一的,这意味着我必须使用索引。

我已经有了检查条件的功能,只是无法找出扫描列表的功能策略。

考虑到在这种情况下,配对无效的可能性有多大,我尝试先找到我无法创建的对,然后获取每个对的成员并将它们与不同的整数放在一起,这样它们就不会无效。从那里我想我可以任意配对其余的。当然,这最终太复杂了,并且在我的实现中有很多冗余。

当我努力弄清楚我的系统时,有没有人可以尝试更好的策略?

列表 算法 排序与 语言无关的 匹配

评论

0赞 ABadHaiku 10/19/2021
诚然,这个问题与 stackoverflow.com/questions/29552742/ 相似......,尽管我不明白该帖子的解决方案的措辞。
0赞 Guy Coder 10/20/2021
如果@ABadHaiku指出的回答是正确的,那么这是一个重复的问题。我同意这个问题听起来像.maximum matching on a graph
0赞 Guy Coder 10/20/2021
如果你用手画画,IMO的问题和解决方案会变得更加直观。

答: 暂无答案