public class Queue8 {int max = 8;int count = 1;// 定义数组,保存皇后放置位置的结果,比如arr = {0,4,7,5,2,6,1,3}int[] arr = new int[max];public static void main(String[] args) {Queue8 queue8 = new Queue8();for(int i=0; i<queue8.max; i++) {queue8.arr[0] = i;queue8.check(1);}}private void check(int n){if(n == max){print();count++;return;}// 依次放入皇后,并判断是否冲突for(int i=0; i<max; i++){arr[n] = i;if(judge(n)){ // 不冲突check(n+1);}}}// 当我们放置第n个皇后,就去检测该皇后是否和前面已经摆放的皇后冲突private boolean judge(int n){for (int i = 0; i < n; i++) {// arr[i] == arr[n]表示在同一列,  Math.abs(n-i) == Math.abs(arr[n]-arr[i]))表示同一斜线if(arr[i] == arr[n] || (Math.abs(n-i) == Math.abs(arr[n]-arr[i]))){return false;}}return true;}private void print(){System.out.printf("count="+count +"  ");for (int i = 0; i < 8; i++) {//System.out.print("count="+count + " "+arr[i] + " ");System.out.print(arr[i] + " ");}System.out.println();}
}

数据结构:回溯--解决八皇后问题相关推荐

  1. 递归回溯解决八皇后问题

    文章目录 前言 八皇后问题 问题解析 代码实现 完整代码 前言 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题.该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇 ...

  2. 回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案

    回溯算法解决八皇后 4-皇后问题 (4 - Queen's problem) In 4- queens problem, we have 4 queens to be placed on a 4*4 ...

  3. 回溯法在解决八皇后问题中的应用

    回溯法:有这样一类题目,它们要求在相对问题的输入规模按照指数速度增长(或者更快)的域中,找出一个具有指定特性的元素.例如:在图顶点的所有排列中求一个哈密顿回路,在背包问题的一个实例中求其中最有价值的物 ...

  4. 有趣的数据结构算法12——利用递归解决八皇后问题

    有趣的数据结构算法12--利用递归解决八皇后问题 题目复述 解题思路 实现代码 GITHUB下载连接 本次教程主要讲述如何利用递归解决八皇后问题,它和汉诺塔一样让人很难过. 题目复述 据说西洋棋手都具 ...

  5. 回溯算法(八皇后问题)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  6. 用lua解决八皇后问题

        要解决八皇后问题,首先必须认识到每一行中只能有一个皇后.因此,可以用一个由8个数字组成的简单数组来表示可能的解决方案.例如,数组{3,7,2,1,8,6,5,4}表示皇后在棋盘中的位置分别是( ...

  7. 分治回溯算法----八皇后问题

    八皇后问题:在一个8×8的棋盘中,放入8个皇后棋子,要求同行同列同斜线不能有重复的皇后棋子,八皇后问题一共有92种解法.如图所示:即八皇后问题的一个解. //分治回溯算法解决八皇后问题 public ...

  8. Python解决八皇后问题

    Python解决八皇后问题 参考文章: (1)Python解决八皇后问题 (2)https://www.cnblogs.com/littleseven/p/5362791.html 备忘一下.

  9. 【算法】递归|迷宫回溯问题|八皇后问题

    [算法]递归|迷宫回溯问题|八皇后问题   迷宫回溯问题,要用动态的眼光来看待这个递归算法. package com.serein.recursion;/*** @author baichuan* @ ...

最新文章

  1. telegraf监控mysql数据库_部署Telegraf+Influxdb+Grafana 架构来监控 MySQL
  2. 华为式创新与海尔式创新——两条道路考验中国制造
  3. laravel(二):laravel基本入门 看到Hello Laravel
  4. 机器学习笔记:误差的来源(bias variance)
  5. PYcharm简单安装教程
  6. jQuery Mobile事件,开发全解+完美注释
  7. Unterminated regular expression 和正则表达式
  8. 毕业季--写给未来的自己
  9. 关于Mac系统接完投影仪拔下来以后有黑框的问题解决办法
  10. linux中cpu使用率命令,LINUX下查看CPU使用率的命令
  11. linux查看多核cpu运行状态,Linux下查看多核CPU信息详解
  12. Hibernate tools的hbm2ddl和hbm2java
  13. a标签和阻止事件冒泡
  14. 代码格式化脚本CodeFormat
  15. 2019第四届新媒体千人峰会广州站将于6月正式开幕!
  16. 使用MindStudio进行UAV场景下人群密度估计开发
  17. 大数据软件应用举例商圈分析城市管理
  18. 网络最强CASE工具 + 经典UML学习电子资下载汇总
  19. java 双重for循环_Java--for循环之双层循环嵌套 执行流程
  20. 南华大学计算机学院ICT,【计算机学院】南华大学计算机学院2016级物联网工程系、网络工程系教育大会顺利举行...

热门文章

  1. Python爬虫selenium、PhanmJs
  2. Revit二次开发--Hello World
  3. 【bzoj4916】神犇和蒟蒻 杜教筛
  4. NetLink Communication Mechanism And Netlink Sourcecode Analysis
  5. 更新版-梳理前端开发使用eslint和prettier来检查和格式化代码问题
  6. CentOS 6.5 源码安装 mysql 5.6
  7. input type=range标签用法实例代码
  8. docker学习笔记(四)——Dockerfile创建自定义镜像
  9. 1分钟快速生成用于网页内容提取的xslt
  10. (8) Xamarin使用Jar檔