【发布时间】:2013-09-04 09:22:54
【问题描述】:
我已尝试通过回溯解决此问题,它会打印所有可能的解决方案。
提出了两个问题:
1.我可以使用其他技术实现 nqueen 吗?
2.是否可以让下面的代码只打印第一个解决方案然后终止?
我当前的代码使用回溯:
n = 8
x = [-1 for x in range(n)]
def safe(k,i):
for j in xrange(k):
if x[j] == i or abs(x[j] - i) == abs(k - j) :
return False
return True
def nqueen(k):
for i in xrange(n):
if safe(k,i):
x[k] = i
if k == n-1:
print "SOLUTION", x
else:
nqueen(k+1)
nqueen(0)
注意:我对不依赖于特定编程语言的技术感兴趣。
【问题讨论】:
-
我发现空间复杂度 O(n) 但时间复杂度也是 O(n) 吗?
标签: python algorithm complexity-theory time-complexity backtracking