码迷,mamicode.com
首页 > 其他好文 > 详细

N-Queens II

时间:2014-09-09 12:32:58      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:算法   algorithm   leetcode   

Follow up for N-Queens problem.

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

bubuko.com,布布扣

答案

public class Solution {
    int queenPosition[];
    int N;
    int totalNum;
    Set<Integer> getRemainingPosition(int index){
        Set<Integer> result=new HashSet<Integer>();
        int i,j;
        for(i=0;i<N;i++){
            result.add(i);
        }
        for(i=0;i<N;i++){
            for(j=0;j<index;j++){
                if((i==queenPosition[j])||(Math.abs(i-queenPosition[j])==Math.abs(index-j))){
                    result.remove(i);
                    break;
                }
            }
        }
        return result;
    }
    public void calNQueens(int index)
    {
        Set<Integer> remainingPosition=getRemainingPosition(index);
        if(index+1==N){
            totalNum+=remainingPosition.size();
        }
        else
        {
            for(Integer position:remainingPosition)
            {
                queenPosition[index]=position;
                calNQueens(index+1);
            }
        }
    }
   public int totalNQueens(int n) 
    {
        N=n;
        totalNum=0;
        queenPosition=new int[N];
        calNQueens(0);
        return totalNum;
    }
}


N-Queens II

标签:算法   algorithm   leetcode   

原文地址:http://blog.csdn.net/jiewuyou/article/details/39154513

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!