题目

皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回 n 皇后不同的解决方案的数量。

思路

与51题完全一致

实现

class Solution:
def totalNQueens(self, n: int) -> int:
table = [[False for _ in range(n)] for j in range(n)]
result = [['.' for _ in range(n)] for j in range(n)]
answer = 0
checkflag = False def put(i, j):
tmp = []
tmp1 = i + j
tmp2 = i - j
for l in range(n):
for m in range(n):
if l == i or m == j or l + m == tmp1 or l - m == tmp2:
if table[l][m] == False:
table[l][m] = True
tmp.append((l, m))
result[i][j] = "Q"
return tmp def remove(i, j, tmp):
for x in tmp:
l = x[0]
m = x[1]
table[l][m] = False
result[i][j] = "." def valid(i, j):
if table[i][j] is False:
return True def check(i, j):
if i == n-1:
nonlocal answer
answer += 1
nonlocal checkflag
checkflag = True
else:
for x in range(n):
backtrace(i + 1, x) def backtrace(row, col):
#if result[row][col] == '.':
if valid(row, col):
tmp = put(row, col)
check(row, col)
remove(row, col, tmp) for t in range(n):
backtrace(0, t)
checkflag = False
table = [[False for _ in range(n)] for j in range(n)]
result = [['.' for _ in range(n)] for j in range(n)]
return answer

最新文章

  1. IOS学习之路--OC的基础知识
  2. Uva 524 Prime Ring
  3. Struts2 Convention插件的使用(1)
  4. Android核心分析之二十三Andoird GDI之基本原理及其总体框架
  5. UI3_视图切换
  6. JS定位PDF页码。
  7. 【转】myeclipse 上安装 Maven3
  8. Mysql ID重新排列
  9. IIS- ASP站点布署时查看ASP错误信息
  10. Flex基础相关
  11. MyBatis和SpringMVC集成事务在Junit测试下有效但是在实际项目无效的问题
  12. 关于 BigDecimal处理float、double数据
  13. ssh登录,爬坑系列
  14. wince单实例启动
  15. ubuntu使用抓包工具,charles
  16. pyton 模块之 pysmb 文件上传(windows)
  17. 【译】第13节---数据注解-Required
  18. SpringBoot的搭建
  19. tornado-模板,转义,上传静态文件
  20. python traceback捕获并打印异常

热门文章

  1. Java基础—控制流程语句(条件语句与循环结构)
  2. HTML 命名规范!
  3. 6.深入k8s:守护进程DaemonSet
  4. JAVA三种多线程实现方法和应用总结
  5. C#LeetCode刷题之#633-平方数之和( Sum of Square Numbers)
  6. C#LeetCode刷题之#628-三个数的最大乘积( Maximum Product of Three Numbers)
  7. scanf函数与getchar函数
  8. 使用Spring Boot开发者工具进行自动重启和页面自动刷新
  9. GUAVA-cache实现
  10. javascript 数组的组合