class solution(object): def solvenqueens(self,n): self.helper([-1]*n , 0 , n) def helper(self , columnPositions , rowIndex , n): if rowIndex == n: self.printSolution(columnPositions,n) return for column in range(n): columnPositions [rowIndex] = column if self.isValid(columnPositions,rowIndex): self.helper(columnPositions,rowIndex+1,n) def isValid (self, columnPositions,rowIndex): for i in range(rowIndex): if columnPositions[i] == columnPositions[rowIndex]: return False elif abs (columnPositions[i]-columnPositions[rowIndex])== rowIndex-i return False return True def printSolution (self,columnPosition,n): for row in range (n): line =="" for column in range (n): if columnPositions[row] == column: line+="Q" else: line+=". " print(line) print("\n") solution(),solvenqueens(8)
时间: 2023-06-20 22:10:08 浏览: 111
这段代码使用回溯法来解决八皇后问题,即在一个8x8的棋盘上摆放8个皇后,使得每个皇后都不会互相攻击(同一行、同一列、同一对角线上都没有另一个皇后)。
其中,`solvenqueens`函数调用了`helper`函数来搜索所有可能的解,并调用`printSolution`函数来输出解。
`isValid`函数用于判断当前放置的皇后是否合法,即是否和之前的皇后冲突。
最后,调用`solution()`来创建一个`solution`对象,然后调用`solvenqueens`函数来解决八皇后问题。
阅读全文