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; } }
时间: 2024-10-10 10:13:39