非递归回溯
算法框架:
int a[n], i;
初始化数组a[n];
i = 1;
while ((i>0(有路可走) && (未达到目标))
{
if(i>n)
输出找到的一组解
else
{
a[i]第一个可能的值;
while (a[i]在不满足约束条件&&在搜索空间)
a[i]的下一个可能的值;
if(a[i]在搜索空间内)
标记占用空间;
i = i + 1;
else
归还占用空间
i = i - 1;
}
}
递归算法框架:
int a[n];
try(int i);
{
if (i>n)
输出结果;
else
for (j=下界;j<=上界;j++)
if (f(j))
{
a[i] = j;
....
....
try(i + 1);
回溯前清理工作 ;
}
}