回溯法--八皇后问题
时间:2022-07-23
本文章向大家介绍回溯法--八皇后问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
def queene(n):
#生成一个一维数组,下标存储行,值存储列
helpQueene([-1]*n,0,n)
def helpQueene(columnPositions,rowIndex,n):
global count
#回溯标志,即N个皇后都找到了相应的位置
if rowIndex == n:
#计算总共有多少种
count+=1
#打印输出
printSolution(columnPositions,n)
return
#0-7共8列
for column in range(n):
#rowIndex的值先从0开始,相当于(rowIndex,column)是一个皇后的坐标,共(0,0)...(7,7)
columnPositions[rowIndex]=column
#放置一个就判断是否有效,如果有效,就到下一行放置
if isValid(columnPositions,rowIndex):
helpQueene(columnPositions,rowIndex+1,n)
def isValid(columnPositions,rowIndex):
#rowIndex:目前放置的行数,遍历这几行皇后的坐标
for i in range(rowIndex):
#如果位于同一列,则返回False
if columnPositions[i] == columnPositions[rowIndex]:
return False
#如果位于对角线上,就返回False
elif abs(columnPositions[i]-columnPositions[rowIndex])==(rowIndex-i):
return False
#否则返回True
return True
def printSolution(columnPositions,n):
for row in range(n):
line=""
for column in range(n):
if columnPositions[row]==column:
line+="Q "
else:
line+='_ '
print(line)
print("n")
queene(8)
print(count)
部分输出:
最后有:92种
- Tomcat用户权限设置
- 优化算法——模拟退火算法
- 绘制动态心形图案::R语言绘制心形图
- 物化视图中的统计信息导致的查询问题分析和修复 (r7笔记第47天)
- R语言之系统聚类(层次)分析之图谱形式完整版
- Java操作数据库Spring(1)
- python基础知识——内置数据结构(集合)
- 关于db link权限分配的苦旅(二)(r7笔记第45天)
- 简单易学的机器学习算法——在线顺序极限学习机OS-ELM
- Java操作数据库Spring(2)
- 解决SSH连接linux中文显示乱码问题
- 设计模式——类图以及类与类之间的关系
- sysdba登录报错insufficient privileges的原因分析(r7笔记第64天)
- JDBC基础入门(1)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 主题hondsome折腾,css修改
- typecho显示网站运行时间
- 从 Dagger 到 Hilt,谷歌为何执着于让我们用依赖注入?
- 为什么非对称加密比对称加密慢?
- 如何优化Nginx的处理性能
- 一键生成前后端代码,Mybatis-Plus代码生成器让我舒服了
- 各类好玩免费API推荐,强烈建议收藏
- 回敬Python蹭女神热度助发朋友圈,Java实现头像分成九宫图,再生成拼图头像
- java作业:实现数组翻转
- windows下搭建spark测试环境
- 微信小程序实时语音识别实践
- 轻量安全的部署方案
- 阿里2020.7.31笔试
- 聊聊dubbo-go的PrometheusReporter
- 聊聊dubbo-go的apolloConfiguration