当前位置: 首页 > news >正文

八皇后问题代码实现(java,递归)

简介:著名的八皇后问题是由棋手马克斯·贝瑟尔在1848年提出来的,要求在 8 × 8 的棋盘上摆放8个皇后,使”皇后“们不能互相攻击 ,当任意两个皇后都不处于同一行、同一列或同一条斜线上时就不会相互攻击,即为目标解。

说明:本文之创建一个数组,索引代表行,对应的值代表列

public class BaHuangHouWenTi {//定义一个max表示共有多少个皇后int max = 8;//定义数组arry,保存存放的结果int[] arr = new int[max];static int count = 0;public static void main(String[] args) {//测试BaHuangHouWenTi bhw = new BaHuangHouWenTi();bhw.check(0);System.out.println("一共有"+count+"种解法");}//main()//。。。。。。。。。。。。。。。。。。。。。。。。编写一个方法,放置第n个皇后private void check(int n){//n表示所在行数,n=0时从 第一行开始if (n == max){//n=8,8个皇后已经放好了print();return;}//n == max//依次放入皇后并判断是否冲突for (int i = 0; i < max; i++){//先把当前皇后n,放到该行的第一列(本文创建了一维数组,索引表示行数,值代表列)arr[n]=i;//将当前行的皇后放在不同列//判断是否冲突if(judge(n)){//不冲突//接着放check(n+1);//递归,逐行判断(索引代表行,即n)}}//for}//check//。。。。。。。。。。。。。。查看当放置第n个皇后,检测是否和前一个已经摆放的皇后冲突private boolean judge(int n){//n表示第n个皇后for (int i = 0; i < n; i++) {//从第一行比较到当前行//表示第n个皇后和前面n减1个在同一列或者对角线从、if (arr[i] == arr[n] || Math.abs(n-i) == Math.abs(arr[n]-arr[i])){return false;}//if}//forreturn true;}//。。。。。。。。。。。。。。写一个方法,将皇后摆放的位置输出private void print(){count++;for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}System.out.println("\n");}//print()}

结果:

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 选科组合(入门)
  • 微信陷阱丨警惕“间谍网勾”的迷魂汤
  • nginx部署前端vue项目
  • Python | Leetcode Python题解之第387题字符串中的第一个唯一字符
  • Spring之配置类解析源码解析
  • [数据集][目标检测]课堂行行为检测数据集VOC+YOLO格式4065张12类别
  • Python中排序算法之插入排序
  • LeetCode - 12 整数转罗马数字
  • 快速了解Git 文件的四种状态及其操作指令、如何忽略文件
  • 【随手记】excel中的text函数使用
  • 数学建模笔记
  • 【Go - 每日一小问,new出来的空间,是在堆还是栈上,用手动回收吗】
  • Python 潮流周刊#67:uv 的重磅更新(摘要)
  • 【业务场景实战】我等你10秒
  • [Leetcode 51][Hard]-n皇后问题-回溯
  • 【347天】每日项目总结系列085(2018.01.18)
  • Date型的使用
  • IOS评论框不贴底(ios12新bug)
  • 微信小程序填坑清单
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 小程序开发之路(一)
  • 新版博客前端前瞻
  • ​比特币大跌的 2 个原因
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • (20050108)又读《平凡的世界》
  • (42)STM32——LCD显示屏实验笔记
  • (ibm)Java 语言的 XPath API
  • (MATLAB)第五章-矩阵运算
  • (层次遍历)104. 二叉树的最大深度
  • (纯JS)图片裁剪
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • *Django中的Ajax 纯js的书写样式1
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .pop ----remove 删除
  • .sdf和.msp文件读取
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @Transactional 详解
  • [ C++ ] STL---stack与queue
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [AIGC] Java List接口详解
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [C++]模板与STL简介
  • [C++提高编程](三):STL初识
  • [DDR5 Jedec 4-1] 预充电命令 Precharge
  • [GHCTF 2024 新生赛]ezzz_unserialize
  • [HTML]Web前端开发技术29(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [HTTP]HTTP协议的状态码
  • [HXPCTF 2021]includer‘s revenge
  • [IE9] IE9 RC版下载链接
  • [java/jdbc]插入数据时获取自增长主键的值
  • [Java][方法引用]构造方法的引用事例分析