N-Queens II 回溯法求八皇后

来源:互联网 发布:link域名可以备案吗 编辑:程序博客网 时间:2024/06/05 03:40

N-Queens II

 

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

Hide Tags
 Backtracking
Hide Similar Problems
 (H) N-Queens
class Solution {public:    int sum;        int totalNQueens(int n) {                int *a=new int[n];        memset(a,0,sizeof(a));        sum=0;        solve(a,n,0);        return sum;            }        void solve(int *a,int n,int index)    {                for(int i=0;i<n;i++)        {            if(isValid(a,n,index,i))            {                a[index]=i;                if(index==n-1)                {                    sum++;                    a[index]=0;                    return ;                }                solve(a,n,index+1);                a[index]=0;            }        }    }        bool isValid(int *a,int n,int x,int y)    {        int col;        for(int i=0;i<x;i++)        {            col=a[i];            if(y==col)                return false;            if(y-col==x-i)                return false;            if(y-col==i-x)                return false;        }        return true;    }};
0 0
原创粉丝点击