Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从一组集合中找出所有不相交集合的算法是什么?_C++_Algorithm_Data Structures_Set - Fatal编程技术网

C++ 从一组集合中找出所有不相交集合的算法是什么?

C++ 从一组集合中找出所有不相交集合的算法是什么?,c++,algorithm,data-structures,set,C++,Algorithm,Data Structures,Set,我有n个集合(n),你可以把你的问题看作布尔两个入口图,元素是行,集合是列,布尔是问题的答案是集合中包含的元素。例如,你的例子是: t A B C 2 1 0 0 5 1 1 1 6 1 0 0 7 1 0 1 1 0 1 0 然后为每个元素创建一个键,描述它所在的不同集合,并在映射中注册该元素 例如,如果我们把密钥创建函数看作是这样的: int keyFunction(bool Xa, bool Xb, bool Xc) { int key =0; if (Xa) {key+=4;

我有n个集合(n),你可以把你的问题看作布尔两个入口图,元素是行,集合是列,布尔是问题的答案是集合中包含的元素。例如,你的例子是:

t A B C
2 1 0 0
5 1 1 1
6 1 0 0
7 1 0 1 
1 0 1 0
然后为每个元素创建一个键,描述它所在的不同集合,并在映射中注册该元素

例如,如果我们把密钥创建函数看作是这样的:

int keyFunction(bool Xa, bool Xb, bool Xc) {
  int key =0;
  if (Xa) {key+=4;}
  if (Xb) {key+=2;}
  if (Xc) {key+=1;}
  return key;
}
然后,我们可以创建地图:

Key ElementsQueue
0   []
1   []
2   [1]
3   []
4   [2,6]
5   [7]
6   []
7   [5]

然后返回此映射的元素。

您能说几句关于输出属性的话吗,或者更好地说,您是如何获得它的?例如,{2}和{6}为什么是不包括在内吗?@ DaviHead考虑如下:你有2个集合A和B。不相交的集合将是A- B、交叉B和B-A。希望这有助于:不能连接到你的链接:/一个解决方案可以考虑你的问题作为一个双入口地图:行是元素和列集合。我将试着写一个草案。@ 88877已经固定了链接。描述。你能详细说明你的解决方案吗?我会尝试付诸实施草案,如果这个解决方案似乎很好,你如何到达关键值作为4,2,1?@ ACEXBOX,我们可以考虑布尔列表作为二进制数的位。所以[x,y,z ]是x* 2 ^ 2 + y* 2 ^ 1 +z * 2 ^ 0.0。
Key ElementsQueue
0   []
1   []
2   [1]
3   []
4   [2,6]
5   [7]
6   []
7   [5]