Python の itertools.combinations() と同様に、配列の長さ k のすべての一意のサブセットを生成する方法が必要です。サポートが 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;
}