首页 > 代码库 > [LeetCode] NQueen II

[LeetCode] NQueen II

public class Solution {    public List<String[]> solveNQueens(int n) {        int [] locations;        locations = new int[n];        List<String[]> result = new ArrayList<String[]>();        getNQueens(locations, 0, result);        return result;    }        public void getNQueens(int [] locations, int row, List<String[]> solutions) {        if (row == locations.length) {            String [] solution = new String[row];            for(int i=0; i<locations.length; i++) {                StringBuffer tmpRow = new StringBuffer();                for (int j=0; j<locations.length; j++) {                    if(j == locations[i]) tmpRow.append("Q");                    else tmpRow.append(".");                }                solution[i] = tmpRow.toString();            }            solutions.add(solution);        }        for (int i=0; i<locations.length; i++) {            if (check(locations, row, i)) {                locations[row] = i;                getNQueens(locations, row+1, solutions);            }        }    }        public boolean check(int [] locations, int row, int clom) {        for (int i=0; i<row; i++) {            if (locations[i] == clom) return false;            if (locations[i]+i == row+clom) return false;            if (i-locations[i] == row-clom) return false;        }        return true;    }}

 

[LeetCode] NQueen II