八皇后(韩顺平java)
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)相关推荐
- 韩顺平 java坦克大战_坦克大战完整版(韩顺平java)
[实例简介] 坦克大战完整源代码(韩顺平java视频配套) [实例截图] [核心代码] 5i86q5 └── 源码 └── Class14 ├── 111.wav ├── bin │ ├── bo ...
- Java笔记(韩顺平Java基础12-14章)
Java学习笔记(第12章 P444-P459)(第13章P460-P498)(第14章P499-P553) 第12章 异常-Exception 异常介绍 编译异常 异常处理 try-catch异常处 ...
- 八皇后java_经典八皇后问题:Java语言
问题描述:将八个皇后放在棋盘上,任何两个皇后都不能互相攻击(即没有任何两个皇后在同一行.同一列或者同一对角线上)如图所示,题目来自于<java语言程序设计:基础篇>练习题6.20和6.22 ...
- 八皇后问题的Java递归算法
1. 八皇后问题 在8*8的棋盘上,放置8个皇后,使各个皇后之间不处于同一行.同一列.同一斜线上,如下图红线部分是和中间红色圆圈冲突位置. 2. 八皇后的递归分析 1. 使用递归分析,首先,第一个皇后 ...
- 韩顺平Java自学笔记 反射
一.反射入门案例 目录 一.反射入门案例 二.反射的机制 1.反射的原理 2.反射相关的类 3.反射的优点和缺点 三.Class类详解 1.Class类的特征 2.Class的常用方法 3.获取Cla ...
- 韩顺平Java学习 泛型
目录 一.泛型的语法 1.传统的方法遍历集合存在的问题 2.使用泛型来解决传统集合添加元素带来的问题 3.泛型使用介绍 4.泛型的使用细节 5.泛型课堂练习 二.自定义泛型 1.自定义泛型类的规范 ...
- B站韩顺平java学习笔记(六)--面向对象编程章节
目录 一.类和对象 1.定义及区别 2.对象内存布局 3.属性/成员变量 (1)基本介绍 (2)注意事项和细节说明 (3)访问属性 4.对象 (1)创建对象 (2)对象分配机制 (3)Java创建对 ...
- 韩顺平java基础——坦克大战(含有线程、I\O流的讲解)
写在最前边: 研究生一枚,为后端实习和未来工作打基础.无意间发现韩顺平老师的课程,细心细致,讲课和吴恩达老师一样,都是保姆式讲解,各种基础知识都会补充,爱了. 韩顺平老师课程地址:https://ww ...
- 回溯算法解决八皇后问题(JAVA实现)
送给程序猿们一句话 <拥有水滴石穿的坚持:懂得聚沙成塔的积累:磨练坚韧不拔的意志:学习脚踏实地的奋斗:提升立世做人的技巧:突破自我设限的障碍.> 文章目录 背景 问题解决 思路 什么是回溯 ...
- 遗传算法解决八皇后问题(java源码)
本文源码下载链接:https://download.csdn.net/download/goulvjiang3176/11221063 另有贪心算法解决八皇后问题的源码下载链接:https://dow ...
最新文章
- 用 Hystrix 构建高可用服务架构
- 16. Leetcode 845. 数组中的最长山脉 (数组-同向双指针-快慢指针)
- ARM中C和汇编混合编程及示例
- matlab如何将两张图画在一起,如何在MATLAB里面将两个图画在一起
- [css] border-radius:50%和border-radius:100%有什么区别?
- java调用webservice_Oracle触发器调用webservice说明
- linux查找启动程序的路径
- pgRouting参考资料
- Eclipse上索爱手机开发平台的配置
- CSDN如何获得积分?
- java大师apple_起名大师下载-起名大师app下载 苹果版v8.01-PC6苹果网
- 本科毕设不通过是什么原因,哪个少年不曾为如何能够顺利优秀毕业而愁眉苦战
- 多视几何009:对极几何
- 手机贴图压缩技术标准及作用
- 潘金莲改变了历史吗 - PostgreSQL舆情事件分析应用
- 项目——3——lnmp-gitlab-jenkins-ansible
- 财管毕业论文哪些题目比较好写?
- 虚拟机上的Linux系统如何联网?
- LeetCode——605.种花问题
- matlab flatten,Numpy中扁平化函数ravel()和flatten()的区别