package 递归recursion;/*** @author 郑道炫* @version 1.0*/
public class bahuanghou {//定义一个max表示共有多少个皇后int max =8;public static int count = 0;int[]array=new int[max];public static void main(String[] args) {//测试一把,8皇后是否正确bahuanghou bahuanghou = new bahuanghou();bahuanghou.check(0);//第一个皇后System.out.println("一共有多少次解法"+count);}
//    编写一个方法,放置第n+1个皇后private void check(int n){if (n==max){//总共8个皇后,放好print();return;}//依次放入皇后,并判断是否冲突for (int i = 0; i < max; i++) {//先把当前这个皇后放到该行的第一列array[n] = i;//判断当放置第n+1个皇后到i+1列时,是否冲突if (judge(n)){//不冲突要放n+1个皇后check(n+1);//8个皇后}//如果冲突,就继续执行 array【n】 = i;即将第n个皇后,放置在本行得后移的一个位置}}//查看当前我们放置第n个皇后,就去检测该皇后是否和前面已经摆放的皇后冲突//n表示第n个皇后private boolean judge(int n){for (int i = 0; i < n; i++) {//表示怕暖第n个皇后和第i个皇后是否在斜线//n=1 放在第二列1  n=1 array[i] = 1//Math.abs(1-0) == 1  Math.abs(array[n] - array[i]) = Math.abs(1-0) = 1if (array[i] == array[n]||Math.abs(n-i)==Math.abs(array[n]-array[i])){return false;}}return true;}//写一个方法,可以将皇后摆放的位置输出private void print(){for (int i = 0; i < array.length; i++) {System.out.print(array[i]+" ");}count++;System.out.println();}}

一共有多少次解法92

感想:最难的部分就是for循环下要设立 array【n】= i;   这里 n是皇后个数,i是纵坐标,i从0开始计数,而n从1开始计数。  然后利用其n 进行是否冲突判断,接下来递归n+1,实际上与地图里找路一样,关键在于 array[n]=i结构是否想到,然后利用其n进行递归。

for (int i = 0; i < max; i++) {
            //先把当前这个皇后放到该行的第一列
            array[n] = i;
            //判断当放置第n个皇后到i列时,是否冲突
            if (judge(n)){
              //不冲突要放n+1个皇后
                check(n+1);//8个皇后

}
            //如果冲突,就继续执行 array【n】 = i;即将第n个皇后,放置在本行得后移的一个位置

}

}

八皇后(韩顺平java)相关推荐

  1. 韩顺平 java坦克大战_坦克大战完整版(韩顺平java)

    [实例简介] 坦克大战完整源代码(韩顺平java视频配套) [实例截图] [核心代码] 5i86q5 └── 源码 └── Class14 ├── 111.wav ├── bin │   ├── bo ...

  2. Java笔记(韩顺平Java基础12-14章)

    Java学习笔记(第12章 P444-P459)(第13章P460-P498)(第14章P499-P553) 第12章 异常-Exception 异常介绍 编译异常 异常处理 try-catch异常处 ...

  3. 八皇后java_经典八皇后问题:Java语言

    问题描述:将八个皇后放在棋盘上,任何两个皇后都不能互相攻击(即没有任何两个皇后在同一行.同一列或者同一对角线上)如图所示,题目来自于<java语言程序设计:基础篇>练习题6.20和6.22 ...

  4. 八皇后问题的Java递归算法

    1. 八皇后问题 在8*8的棋盘上,放置8个皇后,使各个皇后之间不处于同一行.同一列.同一斜线上,如下图红线部分是和中间红色圆圈冲突位置. 2. 八皇后的递归分析 1. 使用递归分析,首先,第一个皇后 ...

  5. 韩顺平Java自学笔记 反射

    一.反射入门案例 目录 一.反射入门案例 二.反射的机制 1.反射的原理 2.反射相关的类 3.反射的优点和缺点 三.Class类详解 1.Class类的特征 2.Class的常用方法 3.获取Cla ...

  6. 韩顺平Java学习 泛型

    目录 一.泛型的语法 1.传统的方法遍历集合存在的问题 2.使用泛型来解决传统集合添加元素带来的问题 3.泛型使用介绍 4.泛型的使用细节 5.泛型课堂练习 二.自定义泛型 1.自定义泛型类的规范 ​ ...

  7. B站韩顺平java学习笔记(六)--面向对象编程章节

    目录 一.类和对象 1.定义及区别 2.对象内存布局 3.属性/成员变量 (1)基本介绍 (2)注意事项和细节说明 (3)访问属性 4.对象 (1)创建对象 (2)对象分配机制 ​(3)Java创建对 ...

  8. 韩顺平java基础——坦克大战(含有线程、I\O流的讲解)

    写在最前边: 研究生一枚,为后端实习和未来工作打基础.无意间发现韩顺平老师的课程,细心细致,讲课和吴恩达老师一样,都是保姆式讲解,各种基础知识都会补充,爱了. 韩顺平老师课程地址:https://ww ...

  9. 回溯算法解决八皇后问题(JAVA实现)

    送给程序猿们一句话 <拥有水滴石穿的坚持:懂得聚沙成塔的积累:磨练坚韧不拔的意志:学习脚踏实地的奋斗:提升立世做人的技巧:突破自我设限的障碍.> 文章目录 背景 问题解决 思路 什么是回溯 ...

  10. 遗传算法解决八皇后问题(java源码)

    本文源码下载链接:https://download.csdn.net/download/goulvjiang3176/11221063 另有贪心算法解决八皇后问题的源码下载链接:https://dow ...

最新文章

  1. 用 Hystrix 构建高可用服务架构
  2. 16. Leetcode 845. 数组中的最长山脉 (数组-同向双指针-快慢指针)
  3. ARM中C和汇编混合编程及示例
  4. matlab如何将两张图画在一起,如何在MATLAB里面将两个图画在一起
  5. [css] border-radius:50%和border-radius:100%有什么区别?
  6. java调用webservice_Oracle触发器调用webservice说明
  7. linux查找启动程序的路径
  8. pgRouting参考资料
  9. Eclipse上索爱手机开发平台的配置
  10. CSDN如何获得积分?
  11. java大师apple_起名大师下载-起名大师app下载 苹果版v8.01-PC6苹果网
  12. 本科毕设不通过是什么原因,哪个少年不曾为如何能够顺利优秀毕业而愁眉苦战
  13. 多视几何009:对极几何
  14. 手机贴图压缩技术标准及作用
  15. 潘金莲改变了历史吗 - PostgreSQL舆情事件分析应用
  16. 项目——3——lnmp-gitlab-jenkins-ansible
  17. 财管毕业论文哪些题目比较好写?
  18. 虚拟机上的Linux系统如何联网?
  19. LeetCode——605.种花问题
  20. matlab flatten,Numpy中扁平化函数ravel()和flatten()的区别

热门文章

  1. hasp运行不成功_HASP加密狗驱动程序没有安装成功如何解决
  2. 《R语言初学者指南》pdf
  3. r 语言初学者指南_阻止自然语言处理的初学者指南
  4. 计算机组成原理(第3版)唐朔飞著 知识点总结 第七章 指令系统
  5. 移远 EC20 模组(4G通信模组)转载
  6. python 爬虫代码实例
  7. redis安装教程(简明扼要,一看就懂)
  8. 【python利用url下载文件】
  9. python人脸识别库_用python库face_recognition进行人脸识别
  10. 冒泡排序c语言(包含完整代码)