2.1
N=8
cnt1 = 0
function isplaceok(a,n,c)
cnt1 = cnt1+1
for i=1,n-1 do
if(a[i]==c) or (a[i]-i==c-n) or (a[i]+i==c+n) then
return false
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
flag = false
function addqueue(a,n)
if flag then
return
end
if n>N then
printsolution(a)
flag = true
else
for c=1,N do
if isplaceok(a,n,c) then
a[n] = c
addqueue(a,n+1)
end
end
end
end
addqueue({},0 )
print(cnt1)
2.2
N=8
printCnt=0
isokCnt=0
times=os.clock()
function isplaceok(a,n,c)
isokCnt=isokCnt+1
for i=1,n-1 do
if (a[i]==c)or(a[i]-i==c-n)or(a[i]+i==c+n) then
return false
end
end
return true
end
function printsolution(a)
printCnt=printCnt+1
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
book={0,0,0,0,0,0,0,0}
function addqueen(a,n)
if n>N then
for i=2,N do
if isplaceok(a,i,a[i])==false then
return
end
end
printsolution(a)
else
for c=1,N do
if book[c]==0 then
a[n]=c
book[c]=1
addqueen(a,n+1)
book[c]=0
end
end
end
end
addqueen({},1)
print(printCnt)
print(isokCnt)
print(os.clock()-times)