Student Details:
- Name: Prexit Joshi
- Roll Number: 233118
- Class: CSE 4th Semester, Section 2
void backtrack(state) {
if (is_solution(state)) {
save_solution();
return;
}
for (each choice) {
if (is_valid(choice)) {
make_choice(); // Try
backtrack(); // Recurse
undo_choice(); // Backtrack
}
}
}File: N-queens.cpp
Place N queens on N×N board so none attack each other.
- Time: O(N!) with pruning
- Solutions: N=4→2, N=8→92
For position (row, col):
- No queen in same column
- No queen in left diagonal (↖)
- No queen in right diagonal (↗)
Solution 1: Solution 2:
. Q . . . . Q .
Q . . . . . . Q
. . . Q . Q . .
. . Q . Q . . .
- Place one queen per row (avoids row conflicts)
- Try each column in current row
- If safe → place queen → solve next row
- If all rows done → solution found!
- Backtrack if no valid column
Memorize:
- Backtracking pattern
- N-Queens safety check
- Time complexity: O(N!)
g++ -std=c++17 -O2 -o nqueens.exe N-queens.cpp
.\nqueens.exe- Sudoku Solver
- Graph Coloring
- Hamiltonian Path
- Subset Sum