特定のセットのすべてのサブセットを見つけるための再帰的バックトラッキング アルゴリズムを作成しました。
void backtracke(int* a, int k, int n)
{
if (k == n)
{
for(int i = 1; i <=k; ++i)
{
if (a[i] == true)
{
std::cout << i << " ";
}
}
std::cout << std::endl;
return;
}
bool c[2];
c[0] = false;
c[1] = true;
++k;
for(int i = 0; i < 2; ++i)
{
a[k] = c[i];
backtracke(a, k, n);
a[k] = INT_MAX;
}
}
今度は同じアルゴリズムを反復形式で作成する必要がありますが、どうすればよいでしょうか?