非递归回溯
算法框架:
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);
回溯前清理工作 ;
}
}
本文详细介绍了非递归回溯算法的工作原理及其算法框架,对比了非递归与递归实现方式的区别。通过逐步解析算法流程,帮助读者理解如何在实际问题中应用回溯算法寻找所有可能的解决方案。
1493

被折叠的 条评论
为什么被折叠?



