递归与回溯

来源:互联网 发布:免费路由软件 编辑:程序博客网 时间:2024/05/16 15:39

非递归回溯

算法框架:

int a[n], i;初始化数组a[n];i = 1;while ((i>0(有路可走) && (未达到目标)){    if(i>n)        输出找到的一组解     else    {        a[i]第一个可能的值;            while (a[i]在不满足约束条件&&在搜索空间)                a[i]的下一个可能的值;                ifa[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);            回溯前清理工作 ;        }}
原创粉丝点击