- 4
- 0
- 约2.94千字
- 约 11页
- 2019-10-24 发布于湖北
- 举报
算法的实现 假设回溯法要找出所有的答案结点 。 设(x1,x2,…,xi-1)是状态空间树中由根到一个结点的路径,而T(x1,…xi-1)是下述所有结点xi的集合,它使得对于每一个xi,(x1,x2,…,xi)是由根到一个结点xi的路径;假定还存在着一些限界函数Bi,如果路径(x1,x2,…,xi)不可能延伸到一个答案结点,则Bi(x1,x2,…,xi)取假值,否则取真值。 于是解向量X(1:n)中的第i个分量,就是那些选自集合T (x1,x2,…,xi-1)且使Bi为真的xi 算法8.4:可以放置一个新皇后吗? Procedure PLACE(k) //如果一个皇后能放在第k行和X(k)列,则返回true,否则返回false。X是一个全程数组,进入此过程时已置入了k个值。ABS(r)过程返回r的绝对值// global X(1:k); integer i,k; i?1 while ik do if X(i)=X(k) or ABS(X(i)-X(k))=ABS(i-k) then return (false) end if i?i+1 repeat return (true) End PLACE 算法8.5:n-皇后问题的解 Procedure NQUEENS(n) //此过程使用回溯法求出一个n*n棋盘上放置n个皇后,使其不能互相攻击的所有可能位
原创力文档

文档评论(0)