The n-queens puzzle is the problem of placing eight chess queens on an 8×8 chessboard so that no two queens threaten each other; thus, a solution requires that no two queens share the same row, column, or diagonal.
import java.util.Scanner; public class Main { static Scanner scan; static int N = 4; static void printBoard(int board[][]) { int i; for (i = 0; i < N; i++) { for (int j = 0; j < N; j++) if (board[i][j] == 1) { System.out.print("Q\t"); } else { System.out.print("_\t"); } System.out.println("\n"); } } static boolean toPlaceOrNotToPlace(int board[][], int row, int col) { int i, j; for (i = 0; i < col; i++) { if (board[row][i] == 1) return false; } for (i = row, j = col; i >= 0 && j >= 0; i--, j--) { if (board[i][j] == 1) return false; } for (i = row, j = col; j >= 0 && i < N; i++, j--) { if (board[i][j] == 1) return false; } return true; } static boolean theBoardSolver(int board[][], int col) { if (col >= N) return true; for (int i = 0; i < N; i++) { if (toPlaceOrNotToPlace(board, i, col)) { board[i][col] = 1; if (theBoardSolver(board, col + 1)) return true; // Backtracking is hella important in this one. board[i][col] = 0; } } return false; } public static void main(String[] args) { scan = new Scanner(System.in); System.out.println("State the value of N in this program!"); N = scan.nextInt(); int[][] board = new int[N][N]; if (!theBoardSolver(board, 0)) { System.out.println("Solution not found."); } printBoard(board); } }