package recursion;public class Queen {private int  num = 0;//累计的方案private static final int MAXQUEEN = 8; private static int [] cols = new int[MAXQUEEN];//MAXQUEEN列皇后放的位置的行下标/*** * @param n 填第 n列的皇后*/public void getCount(int n ) {boolean [] rows = new boolean[MAXQUEEN];for(int m =0;m<n;m++) {rows[cols[m]] = true;//cols[m]表示第m+1个皇后放的行下标int d = n-m;//斜对角方向/*  n 表示 填第 n列的皇后 , m 表示 放过的皇后的列下标*  rows表示 第n行是否不能放queen*  cols 记录的是  下标对应列放的皇后的行下标*  cols[m] = p< MAXQUEEN;  *  对角线上坐标表示 |p-n| = n-m   < MAXQUEEN ;*   if(p-n>0),cols[m]-n=d,cols[m]-d=n>=0;*   if(p-n<=0),n-cols[m]=d,cols[m]+d=n<MAXQUEEN* */if(cols[m]-d>=0) {rows[cols[m]-d] = true;}//反斜角方向if(cols[m]+d<=(MAXQUEEN-1)) {rows[cols[m]+d] = true;}}//开始放皇后for(int i = 0;i<MAXQUEEN;i++) {if(rows[i]) {//不能continue;}cols[n] = i;//下面还有合法位置if(n<MAXQUEEN-1) {getCount(n+1);}else {//找到了一套合适的方案num ++;printQueen();}}}private void printQueen() {System.out.println("这是第"+num+"种方案!");for(int i =0;i<MAXQUEEN;i++) {for(int j =0;j<MAXQUEEN;j++) {if(i== cols[j]) {System.out.print("0 ");}else {System.out.print("+ ");}}System.out.println();}}public static void main(String[] args) {Queen queen = new Queen();queen.getCount(0);}}

回溯法(国际象棋八皇后放入棋盘)相关推荐

  1. 回溯法(八皇后问题)及C语言实现

    回溯法,又被称为"试探法".解决问题时,每进行一步,都是抱着试试看的态度,如果发现当前选择并不是最好的,或者这么走下去肯定达不到目标,立刻做回退操作重新选择.这种走不通就回退再走的 ...

  2. 栈(Stack)的应用—试探回溯法:八皇后问题、迷宫寻径

    栈的应用 试探回溯法 1.八皇后问题 皇后类 struct Queen { //皇后类int x, y; //坐标Queen (int xx = 0, int yy = 0 ) : x(xx), y( ...

  3. 【回溯法】八皇后问题

    问题描述 在国际象棋棋盘(8×8)(8\times8)(8×8)上放置八个皇后,要求每两个皇后之间不能直接吃掉对方. 皇后可以攻击处于同一行.同一列和同一对角线上的棋子. 思路分析 八皇后问题可以使用 ...

  4. 七十八、 回溯法解决八皇后问题

    @Author:Runsen 八皇后问题 八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后. 来自百度百科,皇后的走法是可 ...

  5. 回溯法求解N皇后问题(Java实现)

    回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并以此慢慢地扩大问题规模,迭代地逼近最终问题的解.这种迭代类似于穷举并且是试探性的,因为当目前的可 ...

  6. 回溯法求解N皇后问题及其时间复杂度分析

    回溯法求解N皇后问题及其时间复杂度分析 一.回溯法简介 1. 什么是回溯法? 2. 回溯法的时间复杂度分析 蒙特卡罗方法 蒙特卡罗方法在回溯法求解时间复杂度中的应用 二.回溯法求解N皇后问题 1. 回 ...

  7. 回溯法解决n皇后问题

    回溯法解决n皇后问题 题目要求: 在n×n格的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于在n×n格的棋盘上放置n个皇后, ...

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

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

  9. n皇后问题python_Python:回溯法解N皇后问题

    这个算法采用的是一维数组,皇后个数即数组长度,数组值即对应行皇后所在的列. 按照每行至上而下,每一行从第一列起尝试放置皇后,每次仅需判断对于已经放置的皇后是否产生冲突.如果某个位置可以放置,则放置皇后 ...

  10. 经典回溯算法(八皇后问题)详解

    八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题.该问题是十九世纪著名的数学家高斯1850年提出: 在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列 ...

最新文章

  1. java笔试题_【干货分享】中兴通讯2021校招笔试测评攻略
  2. 波音公司计划利用 3D 打印技术制作模块化卫星
  3. 再谈docker基本命令
  4. JavaXml教程(二)使用DOM方式解析XML文件
  5. VTK:八叉树可视化用法实战
  6. Kick Start 2019 Round D
  7. Java使用原子类进行多线程的 i++ 操作示例
  8. 开源的SIP协议栈 PJSIP
  9. Android官方开发文档Training系列课程中文版:调用相机之控制相机
  10. grpc通信原理_gRPC原理简析
  11. powerpoint(ppt) 的制作
  12. PHP str_replace() 函数详解
  13. springboot整合shiro之thymeleaf使用shiro标签
  14. mysql数据库面试题学生表_SQL笔试题:下面是学生表(student)的结构说明
  15. 【黄啊码】微信小程序+php实现即时通讯聊天功能
  16. 新浪微博批量取消关注引发的思考
  17. Primary主类和Catagory分类都存在相同事件
  18. PMP第二轮复习:整本书内容融会贯通
  19. 虚拟化与网络存储技术:虚拟化技术、Qemu-KVM
  20. ZYNQ - 嵌入式Linux开发 -05- Linux C编程和Makefile

热门文章

  1. PPT参考线_Alt+F9
  2. 2022.08.24【R语言】|pheatmap外接函数调用时不能有NA/NaN/Inf(arg10)报错问题及解决方案
  3. CTF--Do you like xml
  4. KETTLE 新建数据库连接窗口无法打开错误 提示 XUL Definition 错误
  5. Android Design 与 Holo Theme
  6. Pyrene-PEG-Rhodamine,芘丁酸-聚乙二醇-罗丹明,RB-PEG-Pyrene
  7. 【Unity】游戏开发过程中的前后台切换技术
  8. c语言单片机仿真keil,如何在keil中仿真stm32单片机
  9. 心形代码来了,Java表白大师
  10. 飞机大战python_飞机大战python