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)
猜你喜欢
转载自blog.csdn.net/hq_cjj/article/details/106717404
今日推荐
周排行