八皇后问题暴力解决法(介绍代码有说明)

先展示结果:

我这里用的是一维数组来展示的结果
array={7,3,0,2,5,1,6,4}
7的下标为0, 在这里下标+1表示的是第几个皇后也是行的位置,array[n]+1的值就是皇后所在列的位置,即:
0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 1

下面是代码演示:

//定义一个max表示一共有多少皇后int max = 8;static int all = 0;//定义数组,保存皇后放置后位置的结果,比如arr={0,1,2,3,4,5,6,7}int[] array = new int[max];public static void main(String[] args) {//测试Queue8 queue8 = new Queue8();queue8.check(0);System.out.println(all);}//特别注意!!!//每一个check都有for (int i =0; i < max; i++)因此会出现回溯private void check(int n){if (n == max){print();return;}//一次放入皇后判断是否冲突for (int i =0; i < max; i++){//先吧当前皇后放到第1列array[n] = i;//判断放置第n个皇后到i列时,是否冲突if (judge(n)){ //不冲突//接着放置第n个皇后 递归开始check(n+1);}//如果冲突就继续执行array[n] = i;即将第n个皇后,放置在本行的后移一个位置}}/***  判断是否符合位置* @param n 表示第几个皇后* @return 是否*/private boolean judge(int n){for (int i = 0; i < n; i++){//说明//1.array[i] == array[n]  表示判断第n个皇后是否与n-1个皇后处于同一列//2.Math.abs(n - i) == Math.abs(array[n] - array[i])  表示判断第n个皇后是否处于第i个皇后的同一斜线if (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.printf(array[i] + " ");}all++;System.out.println();}

学习笔记-回溯算法(八皇后问题)暴力法相关推荐

  1. 算法学习笔记之三:八皇后问题(递归、回溯)

    (一)题记 从去年下半年开始找工作,大大小小也被"鄙"试."面"试了n多回了.说实话只怪自己并未对常见的笔试题.面试题进行准备,导致败下阵来.一门学问要想学透学 ...

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

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

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

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

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

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

  5. 《数据结构、算法与应用 —— C++语言描述》学习笔记 — 回溯法

    <数据结构.算法与应用 -- C++语言描述>学习笔记 - 回溯法 一.算法思想 二.货箱装载 1.问题描述 2.回溯算法 3.实现 4.测试代码 一.算法思想 回溯法是搜索问题解的一种系 ...

  6. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  7. OpenCV学习笔记(十八):凸包,最小包围区域算子:convexHull(),minAreaRect(),minEnclosingTriangle(),minEnclosingCircle()

    OpenCV学习笔记(十八):凸包,最小包围区域算子:convexHull(),minAreaRect(),minEnclosingTriangle(),minEnclosingCircle() 1. ...

  8. 回溯算法n皇后问题_使用回溯算法的N Queen问题和解决方案

    回溯算法n皇后问题 N-皇后问题 (N - Queen's problem) The n – queen problem is the generalized problem of 8-queens ...

  9. Kinect开发学习笔记之(八)彩色、深度、骨骼和用户抠图结合

    Kinect开发学习笔记之(八)彩色.深度.骨骼和用户抠图结合 zouxy09@qq.com http://blog.csdn.net/zouxy09 我的Kinect开发平台是: Win7 x86 ...

最新文章

  1. POJ2253 Frogger(最短路径)
  2. CoTNet-重磅开源!京东AI Research提出新的主干网络CoTNet,在CVPR上获得开放域图像识别竞赛冠军
  3. 周三多管理学第七版pdf_为什么说管理学原理是企业领导的必修课?
  4. acrobat 控件可以发布吗_短视频可以同时在多个平台发布吗?
  5. Linq 实现sql中的not in和in条件查询
  6. 1.Redis简介与基本命令
  7. Android官方开发文档Training系列课程中文版:管理Activity的生命周期之启动一个Activity
  8. 笨办法学 Python · 续 练习 21:二分搜索
  9. Dart入门—库、泛型与异常
  10. Qt5学习笔记之串口助手四:增加16进制/ASCII切换、周期发送
  11. 虚继承 - C++快速入门29
  12. android禁止下拉状态栏
  13. 2013计算机大纲,2013安徽公务员考试计算机大纲
  14. VUE PDF上传预览下载(vue-pdf)
  15. 一个医院院长的信息化建设感悟:信息化条件下的流程再造
  16. angular 访问图片路径错误
  17. mysql 商品库存表设计_库存数据库表设计
  18. 多线程、并发/并行、自定义线程类、线程安全、守护线程、定时器、线程状态、线程池
  19. Android Market api
  20. Linux 下 find(文件查找)命令的用法总结

热门文章

  1. struts2 FilterDispatcher StrutsPrepareAndExecuteFilter
  2. 严选3门大厂内训课程!让你年后面试超过身边95%的竞争者!
  3. MAX Plus II 仿真波形图为红色 解决方案
  4. 人人网/开心网开放平台Wiki、
  5. 计算机知识点汇总职高,职校学生必备三个必考知识点
  6. IDEA遇到项目包后面出现% classes,% lines covered该怎么解决
  7. LeetCode笔记:Biweekly Contest 81
  8. ASP编程自动采集程序
  9. [转载]使用Ogre 3D 运动模型 -----OGRE 3D 1.7 Beginner‘s Guide中文版 第五章
  10. 赛盛EMC培训笔记(3)