群晖做网站需要备案吗,建旅游网站多少钱,如何得到网站后台权限,青岛网页建设注释如下#xff1a;
class Solution:def totalNQueens(self, n: int) - int:if n 1: # 如果 n 小于 1#xff0c;直接返回 0return 0count 0 # 初始化解的个数为 0stack [(0, set(), set(), set())] # 初始化一个栈#xff0c;元素为当前处理的行数、已经放…注释如下
class Solution:def totalNQueens(self, n: int) - int:if n 1: # 如果 n 小于 1直接返回 0return 0count 0 # 初始化解的个数为 0stack [(0, set(), set(), set())] # 初始化一个栈元素为当前处理的行数、已经放置皇后的列数、左上到右下的对角线和、右上到左下的对角线和while stack: # 如果栈不为空row, cols, xy_diff, xy_sum stack.pop() # 取出栈顶元素if row n: # 如果已经处理完 n 行解的个数加 1继续处理下一个count 1continuefor col in range(n): # 遍历当前行的每一列if col in cols or row - col in xy_diff or row col in xy_sum: # 如果当前列已经被占据或者在左上到右下的对角线或右上到左下的对角线上continue # 跳过这一列stack.append((row1, cols | {col}, xy_diff | {row-col}, xy_sum | {rowcol})) # 否则将当前行数加一、已占据列数加上当前列、左上到右下的对角线和加上当前元素、右上到左下的对角线和加上当前元素的元组入栈return count # 返回解的个数算法步骤
如果输入的 n 小于 1则直接返回 0初始化解的个数为 0初始化一个栈元素为当前处理的行数、已经放置皇后的列数、左上到右下的对角线和、右上到左下的对角线和当栈不为空时取出栈顶元素如果已经处理完 n 行解的个数加 1继续处理下一个遍历当前行的每一列如果当前列已经被占据或者在左上到右下的对角线或右上到左下的对角线上则跳过这一列否则将当前行数加一、已占据列数加上当前列、左上到右下的对角线和加上当前元素、右上到左下的对角线和加上当前元素的元组入栈返回解的个数。