1.解决八皇后问题,必须认识到每一行只能有一个皇后
N = 8;
function isplaceok(a,n,c)
for i=1,n-1 do
if a[i] == c or
(a[i] - c) == (i - n) or
(a[i] - c) == (n - i)
then
return false;
-- body
end
end
return true;
end
function printSolution(a)
for i=1,N do
for j=1,N do
io.write(a[i] == j and "X" or "-"," ");
end
io.write("\n");
end
io.write("\n");
end
function addQueen( a , n)
getRes = false;
if n > N then
printSolution(a)
getRes = true;
else
for c = 1, N do
if getRes == false and isplaceok(a,n,c) then
a[n] = c;
addQueen(a,n+1);
end
end
end
end
addQueen({},1);