计算机算法分析与设计第八章,孙成敏《计算机算法设计与分析》第八章作业.ppt...

文档介绍:

1

第八章: 1、3、4

2

P215-1

修改算法 8.1(198页) 和 8.2(199页) ,使它们只求出问题的一个解而不是问题的全部解。

3

算法8.1

procedure BACKTRACK(n)

integer k,n; local X(1: n)

k ← 1

while k>0 do

if 还剩有没检验过的X(k)使得

X(k) ∈ T ( X(1), …,X(k-1)) and Bk ( X(1), …,X(k)) = true

then if ( X(1), …,X(k) ) 是一条抵达一答案节点的路径

then print ( X(1), …,X(k))

return

endif

k ←k + 1

else k ←k - 1 //回溯

endif

repeat

end BACKTRACK

给出X(k)的所有可能取值

满足隐式约束条件

4

算法6.2

procedure RBACKTRACK(k)

global n, X(1:n)

for 满足下式的每个X(k)

X(k)  T ( X(1), …,X(k-1)) and Bk ( X(1), …,X(k)) = true

do

if ( X(1), …,X(k))是一条抵达一答案结点的路径

then print ( X(1), …,X(k))

stop

endif

call RBACKTRACK(k+1)

repeat

end RBACKTRACK

5

P196-3

重新定义过程 PLACE(k),使它的返回值或者是第 k 个皇后可以放置于其上的合法列号,或者是一个非法值,这样可以提高一些 NQUEENS 的效率,按以上策略重写这两个过程。

6

procedure PLACE(k) //判断X(k)的合法性,若不合法,令其指向下一合法位置,若下一个合法位置不存在,返回-1。

global X(1:k) ; integer i, k

i ← 1

while i

if X(i) = X(k) or ABS( X(i)X(k)) = ABS(i-k)

then X(k) ←X(k)+1 //找下一位置

i ← 1 //i从1起逐个检查X(k)的合法性

if X(k)>n then return (-1) endif

else i ←i + 1 // X(k)

内容来自淘豆网www.taodocs.com转载请标明出处.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值