N-Queens II
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
思路:这是N-Queens的变形,只需要输出所有八皇后的个数。思路和N-Queens差不多,只是不用存八皇后的排列了。所以在判断条件下,如果为真,则直接加1.如果不是,则不加。
class Solution { public: bool check(vector<int> &data,int n) { for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { if(j-i==abs(data[j]-data[i])) { return false; } } } return true; } void Permutation(vector<int> &data,int n,int pBegin,int &count) { if(pBegin==n) { if(check(data,n)==true) { count++; } } else { for(int i=pBegin;i<n;i++) { swap(data[pBegin],data[i]); Permutation(data,n,pBegin+1,count); swap(data[pBegin],data[i]); } } } void Permutation(int n,int &count) { vector<int> data; for(int i=0;i<n;i++) { data.push_back(i); } Permutation(data,n,0,count); } int totalNQueens(int n) { int count=0; Permutation(n,count); return count; } };