NQueens Problem class nQueens { static int N = 8; static int numSolutions = 0; static boolean safe(int row, int column, int[] board) { // Check whether it is safe to place a queen at row, column; // i.e., is board[column]=row a safe configuration? for (int j=1; j if (board[column-j] == row || board[column-j] == row-j || board[column-j] == row+j) { return false; } } return true; } static void place(int column, int[] board) { // Place a queen in all safe positions of column c, // then try placing a queen in the next column. // If a position in column N is safe, print the board. for (int row = 1; row <= N; row++) { board[column] = row; if (safe(row, column, board)) { if (column==N) numSolutions++; // we have a solution else place(column+1, board); // try next column } board[column] = 0; // unrecord that a queen was placed } } public static void main(String[] args) { System.out.println("nQueens loaded"); try { // override default from command line argument if any N = Integer.parseInt(args[0]); } catch (ArrayIndexOutOfBoundsException e) { } catch (NumberFormatException e) { } System.out.println("nQueens: N=" + N); int[] board = new int[N+1]; // N+1 since we need board[1]...board[N] place(1, board); System.out.println("nQueens: numSolutions=" + numSolutions); System.out.println("nQueens done"); } } /* ............... Example compile and run(s) D:\>javac nque.java D:\>java nQueens nQueens loaded nQueens: N=8 nQueens: numSolutions=92 nQueens done D:\>java nQueens 10 nQueens loaded nQueens: N=10 nQueens: numSolutions=724 nQueens done ... end of example run(s) */