练习2.1
添加一个计数变量
num = 0
当打印一次棋盘的时候就把num +1
num = num + 1
最后判断是否已经打印了一次棋盘,如果是则直接return,结束函数的调用
if(num == 1) then
return
end
完整代码如下:
N = 8
**num = 0**
function isplaceok(a,n,c)
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)
**num = num + 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
function addqueen(a, n)
if n > N then
printsolution(a)
else
for c = 1, N do
if isplaceok(a,n,c) then
a[n] = c
addqueen(a,n + 1)
**if(num == 1) then
return**
end
end
end
end
end
addq