def place(x, t):"""判断当前列t放置的皇后是否合法:param x: 当前解:param t: 只确定了前t+1个皇后的位置:return:"""for i in range(t):if abs(i - t) == abs(x[i] - x[t]) or x[i] == x[t]:return Falsereturn Truedef backtrack(n):"""迭代法求n皇后问题:param n::return:"""x = [-1] * n  # 存储某一个解,每一列皇后放置的位置t = 0  # 从第0列开始result = []  # 所有可能的解while t >= 0:while x[t] < n - 1:x[t] += 1if place(x, t):  # 当前状态合法if t == n - 1:  # 求得一个解result.append(x.copy())else:t += 1# 进行回溯x[t] = -1t -= 1return resultif __name__ == '__main__':n = 8re = backtrack(n)print("%d皇后解的个数:%s" % (n, len(re)))print("解的详情:%s" % re)

n皇后问题回溯法-迭代实现相关推荐

  1. n皇后问题-回溯法求解

    n皇后问题-回溯法求解 1.算法描述 在n×n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. n皇后是由八皇后问题演变而来的.该问题 ...

  2. 八皇后问题 回溯法hdu2553

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. n皇后问题(回溯法)

    目录 1.问题描述 2.问题分析 3.完整源码 1.问题描述 八皇后问题是十九世纪著名的数学家高斯于1850年提出的.问题是:在8×8的棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同 ...

  4. 八皇后问题、N皇后问题回溯法详解

    /* * 回溯法解N皇后问题 * 使用一个一维数组表示皇后的位置 * 其中数组的下标表示皇后所在的行 * 数组元素的值表示皇后所在的列 * 这样设计的棋盘,所有皇后必定不在同一行 * * 假设前n-1 ...

  5. JAVA实现N皇后问题(回溯法)

    package com.leetCode; /*** Follow up for N-Queens problem. Now, instead outputting board configurati ...

  6. 8皇后问题--回溯法 (循环递归)

    N皇后问题 问题描写叙述: N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行.同一列.同一斜线上的皇后都会自己主动攻击) 1.因为每一个棋子不可能同行. ...

  7. 回溯法的概念及应用(例题)

    看过英雄联盟比赛的人都知道比赛有个叫时间回溯的技术,就是当系统或者选手设备有不可控的bug或故障时把比赛回溯到这个bug尚未出现的前一段时间,在这个回溯的时间点重新开始比赛.有比较懂电脑的也肯定知道可 ...

  8. 回溯法求解N皇后问题(Java实现)

    回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并以此慢慢地扩大问题规模,迭代地逼近最终问题的解.这种迭代类似于穷举并且是试探性的,因为当目前的可 ...

  9. 回溯法求解N皇后问题及其时间复杂度分析

    回溯法求解N皇后问题及其时间复杂度分析 一.回溯法简介 1. 什么是回溯法? 2. 回溯法的时间复杂度分析 蒙特卡罗方法 蒙特卡罗方法在回溯法求解时间复杂度中的应用 二.回溯法求解N皇后问题 1. 回 ...

最新文章

  1. vmware克隆虚拟机
  2. Nginx负载均衡策略之least_conn
  3. [error] error while loading Consumer, class file '/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.25-5.b18.fc2
  4. 知乎搜索框背后的Query理解和语义召回技术
  5. matlab粒子加速器仿真,粒子群算法优化PID参数 仿真不出结果 程序如下
  6. dapper mysql帮助类_DapperHelper 帮助类
  7. ++[[]][+[]]+[+[]] == 10 //true
  8. INSTALL_FAILED_INVALID_APK: Split lib_slice_X_apk was defined multiple times异常
  9. C语言之如何理解指针的指针(九)
  10. 使用pytorch实现crnn
  11. 从零搭建Spring Boot脚手架(2):增加通用的功能(转载)
  12. 第 1 行出现错误: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-38301: 无法对回收站中的对象执行 DDL/DML
  13. 火狐浏览器安装FoxyProxy代理插件
  14. STM32CUBEMX F103 HAL库开发之 USB虚拟串口
  15. 软件分享 目前最友好的开源远程桌面软件,完美替代 TeamViewer 和 AnyDesk
  16. JAVA 日志脱敏实现
  17. 聊聊数据分析的权重思维:找女票身材 相貌 涵养?
  18. flask框架和配置
  19. 顶级(top-level window)窗口,被拥有窗口(owned window),子窗口(child window) 与WS_POPUP,WS_CHILD深入浅出
  20. 通话记录查询Java_Android获取手机通话记录的方法

热门文章

  1. 查看tomcat的版本号
  2. 松下LUMIX S1相机断电MDT文件修复MP4视频(LPCM)
  3. 5G安全,5G防御,5G网络安全,5G信息安全
  4. 传播易7月发力 微信大号营销成为前锋
  5. php+die(.)函数,die函数介绍与使用方法详解
  6. 学习OpenCV(中文版)
  7. PMP备考错题集-冲刺题二(下)
  8. ipv4到ipv6过渡的三种方案
  9. C语言中经典算法——斐波那契数列的几种算法
  10. 大数据数仓建模(3)