以下是阅读了猿友的文章后 自己的一些理解注释,欢迎指正! def queen(A, cur=0): if cur == len(A): # 到达末行输出所得(cur==8) print(A) return 0 for col in range(len(A)): # 循环搜索 列号依次增加(0-7) A[cur], flag = col, True # 当前行 选择列号 赋值col(列) for row in range(cur): # 循环搜索 已赋值行 (0-(len(cur)-1)) # 1. 判断已赋值行中是否有行的赋值为 col,有则退出本次循环 # 2. 判断之前已赋值的点是否和当前点处于同一斜线 处于同一斜线则退出循环 if A[row] == col or abs(col - A[row]) == cur - row: flag = False # 不满足八皇后条件 行号不加1 break if flag: # True 满足八皇后条件 queen(A, cur + 1) # 行号加1 queen([None] * 8)
猿友文章地址:https://blog.csdn.net/chunqiuwei/article/details/90113087