我需要一种方法来生成数组的所有长度为 k 的唯一子集,类似于 python 中的 itertools.combinations() 。我试图让这些集合用于关联挖掘,直到支持小于 2。任何通过 2 的集合都被证明是令人头疼的。此外,不能为此使用任何 STL 函数。
任何见解将不胜感激。
最接近我的问题所在:在 Python 中生成大小为 k(包含 k 个元素)的所有子集
PS集合(数组)中的每个元素都是整数。
主要:
int temp = 0;
int setsize = 2;
int **testarray = subsets(itemset,itemsetSize,setsize);
for (int i = 0; i < 1300; i++)
{
for(int j = 0; j < 10; j++)
{
cout<<testarray[i][j];
}
}
cout<<endl;
在功能中:
int** subsets (int inputArray[],int arraySize, int k)
{
size_t n = arraySize;
int **resultArray = 0;
resultArray = new int *[1000];
size_t i = (1 << k) -1;
while( !(i >> n) )
{
int pushBack = 0;
int pushBack2 = 0;
int v[500];
for (size_t j = 0; j<n; j++)
{
if (i & (1 << j))
{
v[pushBack] = inputArray[j];
pushBack++;
}
}
resultArray[pushBack2] = v;
pushBack2++;
i = (i+(i&(-i)))|(((i^(i+(i&(-i))))>>2)/(i&(-i)));
}
return resultArray;
}