加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

八皇后问题回溯法Python实现

(2011-10-27 09:25:49)
标签:

八皇后

问题

python

实现

回溯

it

分类: 算法

八皇后问题的Python2.7.2)解法(只求出其中一种可行解):

-*- coding: utf8 -*-

def place(x, k):

    """判断第k个皇后当前的列位置x[k]是否与其它皇后冲突,不冲突返回真,否则返回假

    """

    for in range(1k):

        if x[i] == x[k] or abs(x[i] x[k]) == abs(i k):

            return False

    return True

 

 

def n_queens(n):

    """计算n皇后的其中一个解,将解向量返回

    """

    1

    #解向量

    [0 for row in range(n 1)]

    x[10

    while 0:

        #在当前列加1的位置开始搜索

        x[k] x[k] 1

        

        while (x[k] <= n) and (not place(x, k)):#当前列位置是否满足条件

            #不满足条件,继续搜索下一列位置

            x[k] x[k] 1

        if x[k] <= n:

            #是最后一个皇后,完成搜索

            if == n:

                break

            else:

                #不是,则处理下一行皇后

                1

                x[k] 0

        #已判断完n列,均没有满足条件

        else:

            #第k行复位为0,回溯到前一行

            x[k] 0

            1

    return x[1:]

 

#主函数

#打印出n皇后的一个解

print(n_queens(8))

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有