https://leetcode-cn.com/problems/n-queens-ii/
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
上图为 8 皇后问题的一种解法。
给定一个整数 n,返回 n 皇后不同的解决方案的数量。
示例:
输入: 4 输出: 2 解释: 4 皇后问题存在如下两个不同的解法。 [ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", "...Q", ".Q.."] ]
class Solution { public: int n,num; int vis[3][50]; void search_(int cur){ if(cur==n){ num++; } else for(int i=0;i<n;i++){ if(!vis[0][i]&&!vis[1][cur+i]&&!vis[2][cur-i+n]){ vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=1; search_(cur+1); vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=0; } } } int totalNQueens(int m) { n=m; for(int i=0;i<3;i++){ for(int j=0;j<50;j++){ vis[i][j]=0; } } search_(0); return num; } };