Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Backtracking (recursive)
RecursiveNQueens(Q[1 .. n],r):
if r = n + 1
print Q
else for j ← 1 to n
legal ← True
for i ← 1 to r − 1
if (Q[i] = j) or (Q[i] = j + r − i) or (Q[i] = j − r + i)
legal ← False
if legal
Q[r] ← j
RecursiveNQueens(Q[1 .. n],r + 1)
RecursiveNQueens(Q[1 .. n],r):
if r = n + 1
print Q
else for j ← 1 to n
legal ← True
for i ← 1 to r − 1
if (Q[i] = j) or (Q[i] = j + r − i) or (Q[i] = j − r + i)
legal ← False
if legal
Q[r] ← j
RecursiveNQueens(Q[1 .. n],r + 1)
No comments:
Post a Comment