回溯法解决八皇后问题(循环/递归)

来源:互联网 发布:mac装win7单系统 编辑:程序博客网 时间:2024/04/28 09:02
# 回溯法解决八皇后问题def place(l, k):    for i in range(1,k):        if l[i] == l[k] or abs(k-i) == abs(l[k]-l[i]):            return False    return True# 循环def queue(n):    l = [0]*(n+1)    k = 1    while k >= 1:        l[k] += 1        while l[k] <= n and not place(l, k):            l[k] += 1        if l[k] <= n and k == n:            print '-'*10            for i in l:                print i, " ",            print        # 进入下一个放置点        elif l[k] <= n and k < n:            k += 1        # 回溯        else:            l[k] = 0            k -= 1# 递归def queue2(n,k,l):    if k == n+1:        print '-' * 20        for i in l:            print i, " ",        print    else:        for i in range(1,n+1):            l[k] = i            if place(l,k)and k<=8:                queue2(n,k+1,l)

0 0
原创粉丝点击