我正在尝试在 Python 中实现回溯算法来解决 4 个皇后问题。我创建了一个具有以下内容的 Queens 类:
def __init__(self, board_size=4):
self.board = [[0 for i in xrange(0,board_size)] for i in xrange(0,board_size)];
但是当我实现递归回溯时,由于通过引用传递,董事会在所有访问过的地方都充满了 1。
def backtrack(self, board, next_column):
(algorithm here) ...
board[i][column] = 1 ... #to indicate a placed queen
self.backtrack(board, next_column + 1);
(rest of algorithm)
我知道我能做到
new_board = copy.deepcopy(board);
浅拷贝不适用于高维数组。有没有更好的方法来做到这一点,因为我听说 deepcopy 存在一些问题?建议除了二维列表之外的不同数据结构的答案也是可以接受的。
非常感谢