n皇后问题回溯法-迭代实现
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皇后问题回溯法-迭代实现相关推荐
- n皇后问题-回溯法求解
n皇后问题-回溯法求解 1.算法描述 在n×n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. n皇后是由八皇后问题演变而来的.该问题 ...
- 八皇后问题 回溯法hdu2553
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- n皇后问题(回溯法)
目录 1.问题描述 2.问题分析 3.完整源码 1.问题描述 八皇后问题是十九世纪著名的数学家高斯于1850年提出的.问题是:在8×8的棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同 ...
- 八皇后问题、N皇后问题回溯法详解
/* * 回溯法解N皇后问题 * 使用一个一维数组表示皇后的位置 * 其中数组的下标表示皇后所在的行 * 数组元素的值表示皇后所在的列 * 这样设计的棋盘,所有皇后必定不在同一行 * * 假设前n-1 ...
- JAVA实现N皇后问题(回溯法)
package com.leetCode; /*** Follow up for N-Queens problem. Now, instead outputting board configurati ...
- 8皇后问题--回溯法 (循环递归)
N皇后问题 问题描写叙述: N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行.同一列.同一斜线上的皇后都会自己主动攻击) 1.因为每一个棋子不可能同行. ...
- 回溯法的概念及应用(例题)
看过英雄联盟比赛的人都知道比赛有个叫时间回溯的技术,就是当系统或者选手设备有不可控的bug或故障时把比赛回溯到这个bug尚未出现的前一段时间,在这个回溯的时间点重新开始比赛.有比较懂电脑的也肯定知道可 ...
- 回溯法求解N皇后问题(Java实现)
回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并以此慢慢地扩大问题规模,迭代地逼近最终问题的解.这种迭代类似于穷举并且是试探性的,因为当目前的可 ...
- 回溯法求解N皇后问题及其时间复杂度分析
回溯法求解N皇后问题及其时间复杂度分析 一.回溯法简介 1. 什么是回溯法? 2. 回溯法的时间复杂度分析 蒙特卡罗方法 蒙特卡罗方法在回溯法求解时间复杂度中的应用 二.回溯法求解N皇后问题 1. 回 ...
最新文章
- vmware克隆虚拟机
- Nginx负载均衡策略之least_conn
- [error] error while loading Consumer, class file '/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.25-5.b18.fc2
- 知乎搜索框背后的Query理解和语义召回技术
- matlab粒子加速器仿真,粒子群算法优化PID参数 仿真不出结果 程序如下
- dapper mysql帮助类_DapperHelper 帮助类
- ++[[]][+[]]+[+[]] == 10 //true
- INSTALL_FAILED_INVALID_APK: Split lib_slice_X_apk was defined multiple times异常
- C语言之如何理解指针的指针(九)
- 使用pytorch实现crnn
- 从零搭建Spring Boot脚手架(2):增加通用的功能(转载)
- 第 1 行出现错误: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-38301: 无法对回收站中的对象执行 DDL/DML
- 火狐浏览器安装FoxyProxy代理插件
- STM32CUBEMX F103 HAL库开发之 USB虚拟串口
- 软件分享 目前最友好的开源远程桌面软件,完美替代 TeamViewer 和 AnyDesk
- JAVA 日志脱敏实现
- 聊聊数据分析的权重思维:找女票身材 相貌 涵养?
- flask框架和配置
- 顶级(top-level window)窗口,被拥有窗口(owned window),子窗口(child window) 与WS_POPUP,WS_CHILD深入浅出
- 通话记录查询Java_Android获取手机通话记录的方法