-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueen.java
More file actions
79 lines (64 loc) · 2.24 KB
/
Queen.java
File metadata and controls
79 lines (64 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
<COSC 2007>
<Rajin Santos Gajadhar>
<239479650>
<Lab 2>
*/
public class Queen {
final int BOARD_SIZE = 4;
// Prints the current board configuration
void displayBoard(int board[][]) {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++)
System.out.print(" " + board[i][j] + " ");
System.out.println();
}
System.out.println();
}
// Checks if it's safe to place a queen at board[row][col]
boolean canPlaceQueen(int board[][], int row, int col) {
// Check for queen in the same row on the left side
for (int i = 0; i < col; i++)
if (board[row][i] == 1)
return false;
// Check upper diagonal on left side
for (int i = row, j = col; i >= 0 && j >= 0; i--, j--)
if (board[i][j] == 1)
return false;
// Check lower diagonal on left side
for (int i = row, j = col; j >= 0 && i < BOARD_SIZE; i++, j--)
if (board[i][j] == 1)
return false;
return true;
}
// Solve the problem using recursion and backtracking
boolean placeQueens(int board[][], int col) {
// Base case: If all queens are placed
if (col >= BOARD_SIZE) {
displayBoard(board);
return true;
}
boolean foundSolution = false;
// Try placing a queen in each row of this column
for (int i = 0; i < BOARD_SIZE; i++) {
if (canPlaceQueen(board, i, col)) {
board[i][col] = 1; // Place a queen
// Recur to place rest of the queens
foundSolution = placeQueens(board, col + 1) || foundSolution;
board[i][col] = 0; // Backtrack if placing queen here doesn't lead to a solution
}
}
return foundSolution;
}
// Initializes the board and starts the queen placement process
void solveFourQueens() {
int board[][] = new int[BOARD_SIZE][BOARD_SIZE];
if (!placeQueens(board, 0)) {
System.out.println("No solutions exist");
}
}
public static void main(String args[]) {
Queen solver = new Queen();
solver.solveFourQueens();
}
}