def isValid(board, x, y):
for i in range(x + 1):
for j in range(len(board[i])):
if board[i][j] and (j == y or abs(x - i) == abs(y - j)):
return False
return True
def nQueenProblem(board, row, n, res):
if row == n:
t = []
for i in range(len(board)):
for j in range(len(board[i])):
if not board[i][j] == 0:
t.append(j + 1)
res.append(t)
# res.append(copy.deepcopy(board))
return
for j in range(n):
if isValid(board, row, j):
board[row][j] = 1
nQueenProblem(board, row + 1, n, res)
board[row][j] = 0
return res
if __name__ == '__main__':
n = 10
board = []
for i in range(n):
board.append([])
for j in range(n):
board[i].append(0)
res = []
nQueenProblem(board, 0, n, res)
i = 0
while i < len(res):
if i % 5 == 0:
print '\r'
print res[i],
i += 1
if len(res) == 0:
print 'No Solution'
n皇后问题(python)
最新推荐文章于 2025-11-25 11:31:36 发布
本文介绍了一种解决N皇后问题的递归算法,通过深度优先搜索策略在棋盘上放置皇后,确保任意两个皇后不处于同一行、列或对角线上。算法详细展示了如何检查每个位置是否合法,并在找到解决方案时记录结果。
2695

被折叠的 条评论
为什么被折叠?



