封装N皇后问题为类
时间: 2023-07-25 08:14:13 浏览: 79
好的,我可以帮你封装一个N皇后问题的类。以下是一个简单的实现:
```python
class NQueens:
def __init__(self, n):
self.n = n
self.board = [['.' for i in range(n)] for j in range(n)]
self.solutions = []
def solveNQueens(self):
self.backtrack(0)
return self.solutions
def backtrack(self, row):
if row == self.n:
self.solutions.append([''.join(row) for row in self.board])
return
for col in range(self.n):
if self.isValid(row, col):
self.board[row][col] = 'Q'
self.backtrack(row + 1)
self.board[row][col] = '.'
def isValid(self, row, col):
for i in range(row):
if self.board[i][col] == 'Q':
return False
for i, j in zip(range(row-1, -1, -1), range(col-1, -1, -1)):
if self.board[i][j] == 'Q':
return False
for i, j in zip(range(row-1, -1, -1), range(col+1, self.n)):
if self.board[i][j] == 'Q':
return False
return True
```
这个类的构造函数接受一个整数n,表示棋盘的大小。solveNQueens()方法返回一个包含所有解决方案的列表。isValid()方法检查是否可以在给定的行和列放置皇后。backtrack()方法是递归的,以尝试所有可能的解决方案。
阅读全文