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

网友投稿 1098 2022-10-31

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

#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 columns = new HashSet(); Set diagonals1 = new HashSet(); Set diagonals2 = new HashSet(); return backtrack(n, 0, columns, diagonals1, diagonals2); } public int backtrack(int n, int row, Set columns, Set diagonals1, Set 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; } }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:taskPHP基于原生态php开发的定时计划任务框架
下一篇:MyBatis从入门到精通—MyBatis基础知识和快速入门
相关文章

 发表评论

暂时没有评论,来抢沙发吧~