首页 > 其他 > 详细

N-Queens_review()

时间:2015-06-03 06:07:07      阅读:202      评论:0      收藏:0      [点我收藏+]

The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.

技术分享

Given an integer n, return all distinct solutions to the n-queens puzzle.

Each solution contains a distinct board configuration of the n-queens‘ placement, where ‘Q‘ and ‘.‘ both indicate a queen and an empty space respectively.

For example,
There exist two distinct solutions to the 4-queens puzzle:

    这次用了一维数组,横坐标为下表,纵坐标为值

public class Solution {
    public List<String[]> solveNQueens(int n) {
      ArrayList<String[]> res= new ArrayList<String[]>();
        int nrow= n;
        int[] nQueen= new int[n];
        DFS_nQueen(res,0,nrow,nQueen);
        return res;
    }
    public void DFS_nQueen(ArrayList<String[]> res, int row, int nrow,
            int[] nQueen) {
        // TODO Auto-generated method stub
        if(row==nrow){
            String[] unit=new String[nrow];
            for(int i=0;i<nrow;i++){
                StringBuilder s=new StringBuilder();
                for(int j=0;j<nrow;j++){
                    if(j==nQueen[i]){
                        s.append("Q");
                    }else{
                        s.append(".");
                    }
                }
                unit[i]=s.toString();
            }
            res.add(unit);
        }else{
            for(int i=0;i<nrow;i++){
                nQueen[row]=i;
            if(isValid(nQueen,row)){
                DFS_nQueen(res,row+1,nrow,nQueen);    
            }
            }
        }
    }
    public boolean isValid(int[] array,int row){
        for(int i=0;i<row;i++){
            if(array[i]==array[row] || (Math.abs(i-row)==Math.abs(array[i]-array[row]))){
                return false;
            }        
        }
        return true;
    }  
    
}

 

N-Queens_review()

原文:http://www.cnblogs.com/joannacode/p/4548190.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!