使用0来显示不存在元素的集合的子集

Displaying subsets of a set using 0 for absent elements

本文关键字:集合 子集 元素 不存在 显示 使用      更新时间:2023-10-16

我想用C++编写一个算法。假设我们有x={1,2,3,4}。结果:

1 2 3 0
1 2 0 4
1 0 3 4
0 2 3 4
1 2 0 0
1 0 3 0
0 2 3 0
1 0 0 4
...
0 2 0 0
1 0 0 0

任何帮助都将不胜感激。

您可以使用4位数字的二进制表示。因此,您正在递增这个数字,并将其用作应用于1 2 3 4的掩码。我希望你不要让我们为你写所有的代码。如果有什么不清楚的地方,可以随意询问。

实际上,这是一件相当简单的事情:

std::vector<int> x; 
/* set x to { 1,2,3,4 } */
std::vector<int> temp(x.size());
byte mask = 0;
for(int i = 0; i < (int)pow(2, x.size()); ++i)
{
   for(int j = 0; j < x.length(); ++j)
   {
       mask = ; // this is the tricky part, set it to bit j of i
       temp.at(j) = x.at(j) * mask;
   }
}