Java实现N皇后问题

2023-05-16

八皇后问题(英文:Eight queens),是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。
问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,因为她们会相互攻击,(harm!!)问有多少种摆法。高斯认为有76种方案。但在1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。

下面咱们就进入这正题吧!算法类型:dfs爆搜+回溯
相信大家也熟知这个算法,加上剪枝的算法优化时间复杂度比O(2^n)小很多,空间复杂O(3*n)这里用了三个java集合类数据结构
代码如下:

import java.util.*;
public class N皇后 {
		public static int backtrack(int n, int row, Set<Integer> columns, Set<Integer> diagonals1, Set<Integer> diagonals2) {
	        if (row == n) return 1;
	        int count=0;
	        for (int i = 0; i < n; i++) {
	        	if (columns.contains(i)) continue;
	        	int diagonal1 = row - i;
	            if (diagonals1.contains(diagonal1)) continue;
	            int diagonal2 = row + i;
	            if (diagonals2.contains(diagonal2)) continue;
	            columns.add(i);
	            diagonals1.add(diagonal1);
	            diagonals2.add(diagonal2);
	            count += backtrack(n, row + 1, columns, diagonals1, diagonals2);
	            columns.remove(i);
	            diagonals1.remove(diagonal1);
	            diagonals2.remove(diagonal2);
	            }
	        return count;
	        }
	public static void main(String[] args) {
		Set<Integer> column = new HashSet<Integer>();
		Set<Integer> diagonal1 = new HashSet<Integer>();
		Set<Integer> diagonal2 = new HashSet<Integer>();
		System.out.print(backtrack(8,0,column,diagonal1,diagonal2));
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java实现N皇后问题 的相关文章

  • 数据分析业务场景 | 用户画像

    一 概况 定义 是根据用户的一系列行为和意识过程建立起来的多维度标签 xff1b 是根据用户人口学特征 xff0c 网络浏览内容 xff0c 网络社交活动和消费行为等信息而抽象出的一个标签化的用户模型 xff1b 首要任务 xff1a 根据
  • D435i vins搜集资料

    在D435i上运行VINS Mono 前面都测试好之后就可以再D435i上运行VINS Mone了 xff0c 这里特地感谢下博客如何用Realsense D435i运行VINS Mono等VIO算法 获取IMU同步数据的作者Manii x
  • mavros常用控制消息

    数传 用于查看数传状态 xff1a span class token operator span mavros span class token operator span span class token function radio s
  • 启动T265

    室内T265定点飞行 先启动基本vio脚本 roslaunch p450 experiment p450 vio onboard launch 再启动控制脚本 roslaunch p450 experiment p450 vio contr
  • VINS标定---Ego-planner

    1 检查realsense 和飞控的连接 查看飞控串口 ls span class token operator span dev span class token operator span ttyA span class token o
  • ego-planner框架和参数

    drone id 对应飞机的编号 从0开始 map size xyz 地图场地大小 xff0c 给的目标点要在地图范围内 fx fy cx cy 相机内参 obstacles inflation 障碍物膨胀大小 是 飞机外廓尺寸的1 5倍
  • 执行 install_geographiclib_datasets.sh 错误

    https blog csdn net weixin 41865104 article details 119418901 在 usr share 新建GeographicLib文件夹 在 usr share GeographicLib 文
  • 通过mavros的桥接连接qgc

    fcu url指定的是飞控的连接方式 xff0c 设置飞控为正确的端口即可 gcs url指定的是QGC所在主机的IP xff0c 这个换为运行QGC主机的IP地址即可 如果不知道主机的IP地址可以用udp发布方式 gcs url span
  • ros在同一工作空间下调用其它功能包的头文件

    A功能包需要调用B功能包的头文件 在B功能包CMakeLists txt中修改 去掉catkin package中的include注释 xff08 让别人能识别到自己的头文件 xff09 A功能包在find package时能识别到B功能包
  • 千寻位置NTRIP网络基准站

    端口选择NTRIP连接方式 xff1b 点击 Connect 输入Enter URL Enter URL格式 xff1a http NTRIP账号 xff1a 密码 64 rtk ntrip qxwz com 通道号 RTCM32 GGB
  • 关于egoplanner fastplanner内PID的控制

    Kp0 Kp1 Kp2 Kv0 Kv1 Kv2
  • 如何描述数据分布的特征?

    数据分布的特征可以从集中趋势 xff0c 离中趋势 xff0c 偏态和峰态三个方面进行描述 一 集中趋势 xff08 位置 xff09 是一组平均指标 xff0c 它反映了总体的一般水平或分布 1 平均数 分为 xff1a 简单平均数 xf
  • 对于egoplanner的障碍物分析

    根源 根据障碍物检查并分段初始轨迹 bool BsplineOptimizer span class token operator span span class token function check collision and reb
  • t265 通过mavros传递定位信息px4

    https github com thien94 vision to mavros 通过话题 mavros vision pose pose 向PX4发送位置数据 t265两种安装方式 xff1a USB口朝右镜头向前和向下安装 如需其它方
  • T265 VS D435i

  • px4_sitl_defult error

    span class token operator span Firmware span class token operator span Tools span class token operator span sitl gazebo
  • Intel RealSense D435i与IMU标定用于vins-fusion

    1 标定imu工具 mkdir span class token operator span p imu catkin ws span class token operator span src cd imu catkin ws span
  • PCL点云滤波处理D435i深度图用于octomap

    D435i直接输出的深度点云噪点太多经过滤波处理后再使用 直通滤波 保留或删除某一轴线特定范围内的点 xff0c 改变视野范围 pcl span class token operator span PassThrough span clas
  • ros编译过程中缺少各种依赖库的集合操作

    1 OpenGL All the OpenGL functionality tests failed You might need to modify the include and library search paths by edit
  • ROS发布自定义数组和数据

    主要使用std msgs数据结构 rosmsg show std msgs 自定义话题消息 1 新建msg文件 2 修改CMakeLists txt文件 3 修改package xml文件 4 生成对应头文件 5 编写发布者程序 6 编写接

随机推荐

  • 关于几个坐标系的关系NED ENU ROS

    几个坐标系转来转去 xff0c 时间一长又搞混了 px4使用的坐标系为NED xff08 北东地 xff09 坐标系或者FRD xff08 前右下 xff09 坐标系 然而mavros xff08 melodic版本 xff09 中常使用的
  • 使用Optitrack给px4提供定位

    Motive设置 打开View gt Data Streaming xff0c 确认OptiTrack Streaming Engine和VRPN Streaming Engine勾选Broadcast Frame Data 创建刚体 xf
  • 相关分析与回归分析

    相关与回归分析就是了解变量之间相关关系的统计方法 一 相关分析 具有相关关系的变量之间 xff0c 如果不区分原因和结果 xff0c 我们称之为相关分析 相关分析是看两个因素之间的相关性 xff0c 不需要确定哪个是自变量 xff0c 哪个
  • D435i运行vins-fusion性能提升

    1 mavros imu data mavros imu data raw选用区别 2 vins estimator odometry 话题转发给 mavros vision pose pose 3 关闭D435i的自动曝光 xff0c 设
  • 关于cartographer建立正确关系树的理解

    正确的TF关系map odom base link laser base link是固定在机器人本体上的坐标系 xff0c 通常选择飞控 其中map odom 的链接是由cartographer中lua文件配置完成的 map frame s
  • noetic ---lunar_devel melodic--indigo_devel

    对应关系
  • tf监听两个坐标系关系

    tf监听器 tf span class token operator span TransformListener listener span class token punctuation span span class token co
  • IDEA 2019 Tomcat日志中文乱码问题解决

    操作系统版本 Windows 10 1809 IDEA版本 2019 1 1 Tomcat版本 8 5 38 解决方法 修改conf logging properties配置文件 将其中的UTF 8改为GBK 1catalina org a
  • docker无法从docker hub下载镜像

    root 64 localhost docker docker info Containers 1 Running 1 Paused 0 Stopped 0 Images 2 Server Version 17 09 0 ce Storag
  • 下载yum源报错,无法解析mirrors.aliyun.com

    最近使用centOS安装Oracle xff0c 下载文件提示正在解析主机 mirrors aliyun com mirrors aliyun com 失败 xff1a 未知的名称或服务 解决这个问题简单 xff0c 需要在网络访问中改配置
  • 团队效率工具: 代码格式化之Clang-format

    介绍 平时团队进行合作的时候需要注意代码的格式 xff0c 虽然很难统一每个人的编码风格 xff0c 但是通过工具能够很好的管理代码格式 这里介绍下clang format xff0c 它是基于clang的一个命令行工具 xff0c 能够自
  • 关于头文件保护和变量重复定义的一点理解

    之前一直都有一个困惑 xff1a 既然头文件一般都有避免重复编译的预编译条件保护 xff0c 那为什么在头文件中定义全局变量就会出现重复定义的错误呢 xff1f 这个困惑持续了很久 xff0c 一直到最近才算大概理解 现记录于此 xff0c
  • YOLOv4剪枝【附代码】

    本项目只是负责把框架搭建起来 xff0c 没有进行重训练的微调或者去研究应该剪哪里比较好 xff0c 需要自己去研究 YOLOv4代码参考 xff1a Pytorch 搭建自己的YoloV4目标检测平台 xff08 Bubbliiiing
  • 爬虫 | Selenium库

    一 基础 1 定义 自动化测试工具 xff0c 支持多种浏览器 爬虫中主要用来解决JavaScript渲染的问题便捷地获取网站中动态加载的数据便捷实现模拟登录 2 使用流程 环境安装 xff1a pip install selenium下载
  • java李白打酒蓝桥杯

    题目 xff1a 李白打酒 话说大诗人李白 xff0c 一生好饮 幸好他从不开车 gt gt 一天 xff0c 他提着酒壶 xff0c 从家里出来 xff0c 酒壶中有酒2斗 他边走边唱 xff1a gt gt 无事街上走 xff0c 提壶
  • java求abc的全排列

    给定一个 没有重复 数字的序列 xff0c 返回其所有可能的全排列 示例 输入 abc 输出 xff1a abc acb bac bca cab cba 这里可以使用深度优先遍历 xff0c 遍历完a遍历b xff0c 最后遍历c java
  • java最大公共子序列

    题目 xff1a 求两个字符串的最大公共子序列 这里子序列和子串需要区分一下 xff0c 子序列不需要字符串里元素紧挨着 xff0c 但子串要求前后元素紧挨 xff0c 这里求子序列可以用递归法来做 代码如下 xff1a span clas
  • java矩阵乘法

    试题 基础练习 矩阵乘法 资源限制 时间限制 xff1a 1 0s 内存限制 xff1a 512 0MB 问题描述 给定一个N阶矩阵A xff0c 输出A的M次幂 xff08 M是非负整数 xff09 例如 xff1a 矩阵A为 1 2 3
  • java实现蓝桥杯单词分析

    单词分析 686 题目描述 小蓝正在学习一门神奇的语言 xff0c 这门语言中的单词都是由小写英文字母组 成 xff0c 有些单词很长 xff0c 远远超过正常英文单词的长度 小蓝学了很长时间也记不住一些单词 xff0c 他准备不再完全记忆
  • Java实现N皇后问题

    八皇后问题 xff08 英文 xff1a Eight queens xff09 xff0c 是由国际西洋棋棋手马克斯 贝瑟尔于1848年提出的问题 xff0c 是回溯算法的典型案例 问题表述为 xff1a 在8 8格的国际象棋上摆放8个皇后