| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛

```class Nqueen(object):

n = -1
queenlists = [] #空列表 存储总的序列
queenlist = [] #空列表 存储单个满足条件的序列

def __init__(self, N):#构造函数，初始化执行
self.n = N
self.solution(N)

def solution(self, N):
if N == 0:
print(self.queenlist)
self.queenlists.append(self.queenlist)
return
for tmp in range(0, self.n):
if self.check(N, tmp)== True:
self.queenlist.append(tmp)
self.solution(N-1)
self.queenlist.pop(-1)# 出队列,0是第一个，-1是最后一个，默认-1，类似数组下标

def check(self, N, tail):
if N == 0:
print('N:0 %s' %(self.queenlist))
return True
for tmp in self.queenlist:#行重复
if tmp == tail:
return False
for tmp in range(0, len(self.queenlist)):
if abs(tmp-len(self.queenlist)) == abs(self.queenlist[tmp]-tail):
return False
return True

def printall(self):
for tmp in self.queenlists:
print(tmp)
print(self.queenlists)

Nqueen(8).printall()
#queens = Nqueen(4)
#queens.solution(queens.n)
#queens.printall()

```

```def solution(self, N):
if N == 0:
print(self.queenlist)
self.queenlists.append(self.queenlist)
return
for tmp in range(0, self.n):
if self.check(N, tmp)== True:
self.queenlist.append(tmp)
self.solution(N-1)
self.queenlist.pop(-1)
```

import copy
self.queenlists.append(copy.deepcopy(self.queenlist))这个来保留数据。

self.queenlists.append(self.queenlist) 是把queenlist的指针赋给queenlists
self.queenlists.append(copy.deepcopy(self.queenlist)) 是重新生成一份新的内存数据。把新的内存地址赋给queenlists
• 4
• 1/1页
• 1