以下代码由python3实现
import copy ##棋盘宽度 Q8_WIDTH=8 #全局计数 count=0 ##递归遍历生成有效位置 def findQ8(list): global count listLen=len(list) if listLen==Q8_WIDTH: ##生成结束 打印信息 count+=1 print('Num:%d'%count) printQ8(list) else: for j in range(Q8_WIDTH): ##生成列的位置 if listLen == 0: ##第一步棋 直接生成8种走法 listCopy = copy.copy(list) listCopy.append(j) findQ8(listCopy) else: if list.count(j) == 0: ##与之前的列不能相等 isValue=True for index, k in enumerate(list): ##与之前的对角线不能冲突 if abs(k - j) == (listLen - index): isValue=False if isValue: ##生成下一步有效棋 listCopy = copy.copy(list) listCopy.append(j) findQ8(listCopy) ##打印结果 def printQ8(list): for i in range(Q8_WIDTH): for j in range(Q8_WIDTH): clum = list[i] print('%d ' % (j == clum), end='') print() #调用方法 if __name__=='__main__': findQ8([])