八皇后问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。
一言以蔽之:就是在递归回溯的过程中实现条件过滤,最后得到想要的结果;
代码一:
"""
八皇后问题:
回溯算法
"""
# 设置棋盘的大小规模
max_coordinate = 8
# 构建数据结构
# 初始化坐标列表,
# 列表的value为纵坐标值(即棋盘上行数的标记值),
# 列表的index为横坐标值(即棋盘列数标记值)
queen_list = [None]*8
def show():
column = 0
# 对列进行遍历,打印坐标
while column < max_coordinate:
print("(%d, %d)" % (column, queen_list[column]), end=" ")
column += 1
print("")
# 对第棋盘上第column列的情况进行检查,看看是否能够放置皇后
def check(column):
column_2 = 0
# 对比column小的列进行遍历
while column_2 < column:
# 如果比column小的列中有和column对应的queen_