【发布时间】:2014-04-12 08:53:26
【问题描述】:
我编写了递归回溯算法来查找给定集合的所有子集。
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;
}
}
现在我们必须以迭代的形式编写相同的算法,该怎么做?
【问题讨论】:
-
用循环和堆栈替换递归
-
请提供示例代码。
标签: algorithm recursion set iteration recursive-backtracking