求解集合问题的算法

标签 algorithm language-agnostic math set

如果我有一组值(我称之为 x)和 x 的多个子集:

计算并集等于 x 但没有一个子集相互交叉的所有可能组合的最佳方法是什么。

一个例子可能是:

如果 x 是数字 1 到 100 的集合,并且我有四个子集:

  • a = 0-49
  • b = 50-100
  • c = 50-75
  • d = 76-100

那么可能的组合是:

  • a+b
  • a + c + d

最佳答案

你描述的是Exact cover问题。一般的解决方案是 Knuth 的 Algorithm X , 与 Dancing Links算法是具体实现。

关于求解集合问题的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1452143/

相关文章:

c++ - 增强型 FrogRiverN

c# - Google Kickstart 2018 年 A 轮的 "Even Digits"问题

c - 使用给定算法解密消息

c# - 如何在 C# 中计算这种类型的方程 (x^1+...x^n)?

php - 砖石般的图片网格

C++,数组元素不按顺序组合

language-agnostic - DRY 没有单个代码?

algorithm - 给定整数序列找到闭式函数的算法有哪些?

language-agnostic - 为什么建议在源文件末尾有空行?

javascript - 巴比伦平方根算法——初始猜测值