52. N-Queens II

Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.


public class Solution {
    int rec = 0;
    public int totalNQueens(int n) {
        
        if(n<=0)
          return rec;
        int[] num = new int[n];
        for(int i=0;i<n;i++)
           num[i] = i;
        DFS(0,n,num);
        return rec;
    }

    public void DFS(int start,int N,int[] num)
    {
        if(start == N)
        {
            if(isValid(num))
              rec += 1;
           // System.out.println(rec);
        }
        else
        {
            for(int i=start;i<N;i++)
            {
                 int temp1=num[start];
                 num[start]=num[i];
                 num[i]=temp1;
                 
            // if(isValid(num,i));
                 DFS(start+1,N,num);
                 
                 int temp2=num[start];
                 num[start]=num[i];
                 num[i]=temp2;
            }
        }
    }
   
    public boolean isValid(int[] num)
    {
        for(int i=0;i<num.length;i++)
         for(int j=i+1;j<num.length;j++)
            if(Math.abs(num[i]-num[j])==Math.abs(i-j))
               return false;
         return true;
    }
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目 Follow up for N-Queens problem. Now, instead outputtin...
    persistent100阅读 130评论 0 0
  • 题目 Follow up for N-Queens problem.Now, instead outputting...
    Al73r阅读 100评论 0 0
  • Jun 23 更新昨天看sudoku solver又陷入强烈的疑惑中,为什么所有人的dfs函数都是boolean的...
    DrunkPian0阅读 844评论 0 0
  • 原题 根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局。 样例比如n=4,存在2种解决方案 ...
    Jason_Yuan阅读 395评论 0 0
  • 爱是一个伟大的词 也是我的绳 牵着你和我 但缺位在我的生活 我只想爱 有你和木屋 漫步于乡道 看孩童的蹦跳 一直不...
    张桉树阅读 152评论 0 3