Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# 8 Queens Problem Recursively

Posted on 1997-11-10
Medium Priority
1,312 Views
Does anyone have an example to solve the 8 Queens problem recursively?

Place 8 queens on a chess board so that no two queens are attacking each other
0
Question by:sdevine
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
1 Comment

LVL 5

Accepted Solution

y96andha earned 200 total points
ID: 1216722
Here is an example which I just wrote for you. It will lose its indentation when posted, but I hope you can read it anyway. It sets up a chessboard, tries adding a queen at a time in a free position, and for each time marks the squares which cannot be used, and tries to add a new queen recursively.

type
pos = (Free, Queen, Busy);
chessboard = array[1..8,1..8] of pos;

Var
r,k: integer;
emptyboard : chessboard;

function min(a,b:integer):integer;
begin
if a<b then min := a else min := b;
end;

function findsolution(board : chessboard; level : Integer): Boolean;
Var
r,k:integer;
i:integer;
ch:char;
boardcopy:chessboard;
begin
findsolution:=false;
boardcopy := board;
for r:=1 to 8 do
for k:=1 to 8 do
if boardcopy[r, k] = Free Then
begin
if level+1 = 8 then begin
writeln;
writeln('Solution:');
for r:=1 to 8 do
begin
for k:=1 to 8 do
If boardcopy[r, k] = Queen then
write('Q')
else
write(' ');
writeln;
end;
findsolution:=true;
exit;
end;

board:=boardcopy;
for i:=1 to 8 do
board[i, k]:=Busy;
for i:=1 to 8 do
board[r, i]:=Busy;
for i:=1-min(r,k) to min(9-r,9-k)-1 do
board[r+i, k+i]:=Busy;
for i:=1-min(9-r,k) to min(r, 9-k)-1 do
board[r-i, k+i]:=Busy;

board[r, k]:=Queen;

if findsolution(board, level+1) Then
begin
findsolution:=True;
exit;
end;

end;

end;

begin

for r:=1 to 8 do
for k:=1 to 8 do
emptyboard[r,k]:=Free;

if findsolution(emptyboard, 0) then
writeln('A solution was found');
end.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It’s time for spooky stories and consuming way too much sugar, including the many treats we’ve whipped for you in the world of tech. Check it out!
Here in this article, you will get a step by step guidance on how to restore an Exchange database to a recovery database. Get a brief on Recovery Database and how it can be used to restore Exchange database in this section!
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …
###### Suggested Courses
Course of the Month12 days, 4 hours left to enroll