八皇后问题---回溯
package com.atguigu.recursion;/*** @创建人 wdl* @创建时间 2021/3/21* @描述*/
public class Queue8 {//先定义一个max表示共有多少个皇后int max=8;//定义数组array,保存皇后防止位置的结果,比如 arr[8] = {0 , 4, 7, 5, 2, 6, 1, 3}int[] array=new int[max];static int count=0;public static void main(String[] args) {//测试一把,8皇后是否正确Queue8 queue8 = new Queue8();queue8.check(0);System.out.println("一共有"+count+"解法");}//编写一个方法,放置第n个皇后//特别注意:check是每一次递归时,进入到check中都有for (int i = 0; i < max; i++),因此会有回溯private void check(int n){if(n==max){//n=8,其实8个皇后就已经放好了print();return;}//依次放入皇后,并判断是否冲突for (int i = 0; i < max; i++) {//先把当前这个皇后n,放到该行的第1列array[n]=i;//判断当前放置的第n个皇后到i列时,是否冲突if(judge(n)){//不冲突//接着放n+1个皇后,即开始递归check(n+1);}//如果冲突,就继续执行array[n]=i;即将第n个皇后,放置在本行的后移一个位置}}//查看当我们放置第n个皇后,就去检测该皇后是否和前面已经摆放的皇后冲突/**** @param n 表示第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皇后是否在同一斜线//3.判断是否在同一行,没有必要,n每次都在递增if (array[i]==array[n]||Math.abs(n-i)==Math.abs(array[n]-array[i])){return false;}}return true;}//写一个方法,可以将皇后摆放的位置输出private void print(){count++;for (int i = 0; i < array.length; i++) {System.out.print(array[i]+" ");}System.out.println();}}
八皇后问题---回溯相关推荐
- Bailian2754 八皇后【回溯】
2754:八皇后 总时间限制: 1000ms 内存限制: 65536kB 描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格) ...
- Bailian2698 八皇后【回溯】
2698:八皇后问题 总时间限制: 10000ms 内存限制: 65536kB 描述 在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方. 输入 无输入. 输出 按给定顺序和格式输出所有 ...
- [C语言]八皇后问题回溯算法
八皇后问题:在8×8格的国际象棋上摆放八个皇后,任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 将棋盘抽象为4 * 4到20 * 20大小的矩阵 输入样例: 请输入棋盘的大小(4 ...
- PHP实现八皇后算法-回溯算法
回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回,尝试别的路径.回溯法是一种选优搜索法,按选优条件向前搜索,以 ...
- java递归-八皇后问题(回溯算法)
1.八皇后问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任 ...
- 八皇后问题 回溯法hdu2553
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- leetcode面试题 08.12. 八皇后(回溯)
设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行.不同列,也不在对角线上.这里的"对角线"指的是所有的对角线,不只是平分整个棋盘的那两条对角线. ...
- 八皇后问题 回溯方法
#include<iostream> using namespace std;//当前检测的行列 是否 符合条件 //从1行1列开始 bool check(int row,int col, ...
- 回溯算法 | 追忆那些年曾难倒我们的八皇后问题
文章收录在公众号:bigsai 更多精彩干货敬请关注! 前言 说起八皇后问题,它是一道回溯算法类的经典问题,也可能是我们大部分人在上数据结构或者算法课上遇到过的最难的一道题-- 第一次遇到它的时候应该 ...
最新文章
- [BLE--Link Layer]物理信道
- Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建(转)
- LINUX 内核代码备忘录
- 简洁又快速地处理集合——Java8 Stream(下)
- [日志]家居清洁十大秘笈
- 2017.9.24 虔诚的墓主人 思考记录
- 微信小程序,对个人开发者开放之亲体验
- animation 循环_(五)实践出真知——Python 之定时器、线程、动画制作Animation类...
- MFC OpenCasCade – 实现View中的实体对象与右边属性窗口的关联
- C++实现NV12格式转BGR
- 金士顿16G优盘变8M恢复教程
- IAR在写结构体时不提示_U盘被写保护了以后怎么办?
- word打开html显示空白,电脑打开Word文档内容显示不全或显示空白怎么办
- 前沿探索:腾讯云数据库自治服务最佳实现
- openstack-Agile Controller-DCN插件安装
- 一步步学习SPD2010--第一章节--探索SPD2010(3)--理解SharePoint Designer 2010新功能
- 本地代码上传到gitlab
- PostGIS查询指定范围的数据
- uniapp获得经纬度和城市
- 小L的算法课堂——博弈论
热门文章
- 蒸汽管道图纸符号_蒸汽管道疏水阀图标怎么画法
- opencv cannot open file 'opencv_calib3d249d'
- Cities(2020昆明C)
- cf1526 C Potions
- 牛客题霸 [二叉树中是否存在节点和为指定值的路径] C++题解/答案
- 【每日一题】7月3日精讲—毒瘤xor
- 8.11模拟:数据结构
- jzoj3738-[NOI2014模拟7.11]理想城市(city)【树,模型转换】
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明) AC(带悔贪心)
- 2016 Multi-University Training Contest 1 1004 GCD(ST表+二分)