#yyds干货盘点# leetcode算法题:N皇后 II

题目:

n皇后问题 研究的是如何将 n个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。

输入:n = 4输出:2解释:如上图所示,4 皇后问题存在两个不同的解法。

示例 2:

输入:n = 1输出:1

代码实现:

class Solution { public int totalNQueens(int n) { Set<Integer> columns = new HashSet<Integer>(); Set<Integer> diagonals1 = new HashSet<Integer>(); Set<Integer> diagonals2 = new HashSet<Integer>(); return backtrack(n, 0, columns, diagonals1, diagonals2); } public int backtrack(int n, int row, Set<Integer> columns, Set<Integer> diagonals1, Set<Integer> diagonals2) { if (row == n) { return 1; } else { int count = 0; for (int i = 0; i < n; i++) { if (columns.contains(i)) { continue; } int diagonal1 = row – i; if (diagonals1.contains(diagonal1)) { continue; } int diagonal2 = row + i; if (diagonals2.contains(diagonal2)) { continue; } columns.add(i); diagonals1.add(diagonal1); diagonals2.add(diagonal2); count += backtrack(n, row + 1, columns, diagonals1, diagonals2); columns.remove(i); diagonals1.remove(diagonal1); diagonals2.remove(diagonal2); } return count; } }}

【文章原创作者:防ddos攻击 shsgf.html 复制请保留原URL】一直想去旅行,去很美很美的地方,但往往真正踏足想去的地方,

#yyds干货盘点# leetcode算法题:N皇后 II

相关文章:

你感兴趣的文章:

标签云: