数据结构与算法(Java版) | 几个经典的算法面试题(下)

news2025/7/8 1:26:42

上一讲,我给大家介绍了两个经典算法面试题,即字符串匹配问题和汉诺塔游戏,这一讲,我再来给大家介绍两个经典算法面试题,它们就是八皇后问题和马踏棋盘算法,注意,马踏棋盘算法也被称为骑士周游问题哟!

接下来,我就先来给大家介绍一下八皇后问题这个经典算法面试题吧!

八皇后问题

八皇后问题,是一个古老而著名的问题,而且还是回溯算法的一个典型案例。该问题是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的,即在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,也就是说任意两个皇后都不能处于同一行、同一列或同一斜线上,问一共有多少种摆法?

在这里插入图片描述

这个问题,当时一个叫高斯的人认为一共有76种方案,高斯相信大家都知道,他是一个著名的数学家,小学的时候咱们就学过高斯定律,对他有印象吧!反转来了,在1854年,柏林的象棋杂志上有不同的作者发表了40种不同的解,后来又有人用图论的方法解出了92种结果,的确,如果用图论的方式来编程实现,那么确实是有92种摆法。当然,等到计算机发明后,多种计算机语言就都可以用来解决此问题了!

注意,这里我只是想给大家简单介绍一下八皇后问题,至于具体编程实现,那就要等到后面专门讲这个八皇后问题时再来给大家写代码实现了。

刚刚好,网络上就有一款这样的八皇后在线玩的小游戏,游戏地址是https://www.novelgames.com/zh/queens/,打开该地址,你便能尽情地玩耍了!我看大家眼馋,要不接下来我给大家玩一把吧!看看我能不能在棋盘上摆出一个符合要求的八皇后摆法!不过,在玩游戏之前,我需要先给大家说明一下,就是符合要求的八皇后摆法是一共有92种,每一种摆法都让我试一下,那我肯定搞不定,但是一两种摆法我还是可以摆出来的,这一点对我来说没有任何问题啊!

打开该游戏,我来给大家玩一把,看我怎样摆出一个符合要求的八皇后摆法。当然,如果大家有兴趣,不妨自己也来玩一把!

首先,将一个皇后摆在棋盘的最左下角的那个格子。

在这里插入图片描述

摆好之后,那么第二行的第一个格子和第二个格子你就不能摆了,因为如果你摆了,那这两个皇后就会处在同一列或者同一斜线上,游戏自然也就无法继续玩下去了。

那第二行我们摆在哪一个格子呢?摆在第五个格子就OK了。

在这里插入图片描述

继续,第三行我们摆在第八个格子上。

在这里插入图片描述

继续,第四行我们摆在第六个格子上。

在这里插入图片描述

继续,第五行我们摆在第三个格子上。

在这里插入图片描述

继续,第六行我们摆在第七个格子上。

在这里插入图片描述

继续,第七行我们摆在第二个格子上。

在这里插入图片描述

最后一行我们摆在第四个格子上。

在这里插入图片描述

至此,游戏完美通关!

现在,大家应该对这个游戏感兴趣了吧!哈哈哈😄,还是挺有意思的啊,大家呢也不妨先在这里玩一玩,后续我再专门给大家去讲这个八皇后问题的回溯算法,千万不要着急哟!

马踏棋盘算法

下面我们再来看一个非常有意思的经典算法面试题,即马踏棋盘算法,当然,有些人也把它叫做骑士周游问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springsecurity--Config层代码常用代码指令

前提搭建 使我们的类继承于WebSecurityConfigurerAdapter这个类 同时调用service还有新建一个bean方法 Bean public PasswordEncoder getPassword() {return new BCryptPasswordEncoder(); } 这个代码是可以自定义账户和密码 自定义登录账户和密码写在service类中 下方的红框…

SSM框架-SSM整合

目录 1 ContextLoaderListener 2 准备工作 3 配置web.xml 4 配置springmvc.xml 5 配置spring.xml 6 Spring整合MyBatis 7 配置log4j.xml 8 配置事务 9 测试功能 9.1 创建pojo类 9.2 员工列表功能 9.3 分页数据 9.4 分页相关超链接 1 ContextLoaderListener Spring提…

安卓玩机搞机技巧综合资源-----卸载内置软件 获取root权限 刷写第三方ROM【六】

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…

985、211毕业一年,面试八家大厂,四面拿美团offer(Java后端)

自我介绍 本人三年开发,985硕士,211本科,专业都是软件工程,一直投的是Java后台开发,只投过一次网易的测试,技术不是太牛,但是比较努力。实验室没有项目,so项目经验是0,在…

openssl自动批量生成证书

使用bash批处理程序自动生成证书信息。 1、在linux系统创建一个文件夹 $ mkdir my_cert 2、创建CA证书以及私钥 $ cd my_cert $ openssl genrsa -out CA_Private.key 2048 $ openssl req -x509 -new -nodes -key CA_Private.key -sha256 -days 365 -out CA_Certificate.p…

Node.js 动画:事件循环

我们都听说过 JavaScript 和 Node.js 是单线程的,但实际上这意味着什么? 这意味着 JavaScript 一次只能做一件事。例如,我们不能同时对数字进行乘法和求和。我们通常按顺序进行操作。我们先加然后乘,反之亦然。现代计算机速度很快…

常见的卷积神经网络模型,卷积神经网络数学建模

1、卷积神经网络cnn究竟是怎样一步一步工作的 用一个卷积核滑动图片来提取某种特征(比如某个方向的边),然后激活函数用ReLU来压制梯度弥散。对得到的结果用另一个卷积核继续提取reLU,然后池化(保留区域最大或者用区域…

【linux】centos7 普通用户授予 root 权限

目录前言sudo介绍sudo的使用前提 --- 配置文件/etc/sudoers结语前言 最近通知 linux 期末考试啦!要上机实操并且要求不能使用 root 用户,因此有些操作需要涉及到权限问题,我们都知道在命令前加sudo就行了,但sudo的使用也是有前提…

Spring 创建和使用 · 存储 bean 对象 · 获取并使用 bean 对象 · 关于配置文件 id 的注意事项 · getBean 方法的更多用法

Spring 是一个包含了众多工具方法的 IoC 容器。 容器的最基本的功能:把对象存储到容器(Spring)中;从容器中将对象取出来。 在 Java 中对象也叫做 Bean,以后我们遇到对象就以 Bean 著称。 一、创建 Spring 项目1.1 创建…

吹爆,阿里专家手码“数据库优化速成小册”Github现已疯传

现在在很多设计、开发、测试人员的眼中会认为SQL优化只是DBA 的事情。他们不需要去关心。反映到具体工作中,他们缺乏相应的优化意识,只注重功能的实现而忽略了相应的执行成本。最终的结果往往就是代码质量不高,软件上线后问题多。 LZ当初就是…

现货黄金K线图的“温柔一刀”

学习现货黄金交易K线图如何看、如何分析的方法非常多,但是小编交易,徐学一到两种即可,学会小而精的分析方法,才是我们赚钱的秘诀。俗话说得好,一招鲜吃遍天,就是这个道理。如果技术太多,最后没办…

IOT云平台 simple(5)springboot netty实现modbus TCP Master

本系列教程包括: IOT云平台 simple(0)IOT云平台简介 IOT云平台 simple(1)netty入门 IOT云平台 simple(2)springboot入门 IOT云平台 simple(3)springboot netty实现TCP Se…

IFR202型红外雨量传感器数据说明

信号输出 寄存器 OUT_CFG 默认参数时,当降雨量达到预设的分辨率时,传感器从脉冲线输出脉冲信号、从数字 接口 RS232 或者 RS485 输出总降雨量、LED 指示灯闪烁一次。 数字接口 RS232 或者 RS485 输出数据帧说明如下:(16 进制数…

VUE3 数据的侦听

侦听数据变化也是组件里的一项重要工作,比如侦听路由变化、侦听参数变化等等。 Vue 3 在保留原来的 watch 功能之外,还新增了一个 watchEffect 帮助更简单的进行侦听。 watch 在 Vue 3 ,新版的 watch 和 Vue 2 的旧版写法对比,在…

Spring Security基础使用

Spring Security基础使用 定义 官方文档:https://docs.spring.io/spring-security/reference/index.html security结合servelt:https://docs.spring.io/spring-security/reference/5.6/servlet/getting-started.html Security 官方示例项目:https://…

深度对比 Footprint 和 Dune 数据模型

在产品建设方面,数据所有权转移已迅速成为需要解决的关键问题之一。社交媒体平台滥用数据的现象频发,我们亟需建立方案来解决这一问题。鉴于此,区块链提供了一种功能,可以永恒地存储、转移数据,并创建市场,…

ChatGPT帮你写代码?人工智能ChatGPT之于Web3的几点思考

人工智能AI有人热情膜拜,有人畏惧如虎,AI的发展已经进入高层面的快车道,技术更新迭代日新夜异,技术无罪也无善恶,曾经科幻未来的人机交流,共生共存如今在我们的脑海中已经有了轮廓的意识感想,科…

Spring底层事务原理

Spring事务底层原理一、EnableTransactionManagement工作原理二、Spring事务基本执行原理三、Spring事务的过程四、Spring事务传播机制五、Spring事务传播机制分类(1)案例分析、情况1(2)案例分析、情况2(3)…

SEVNLDAEFR, 186142-28-9

This peptide substrate corresponds to the Swedish Lys-Met/Asn-Leu (K670N/M671L) mutation of the amyloid precursor protein (APP) β-secretase cleavage site. It has been used for assaying β-secretase activity.该肽底物对应于淀粉样前体蛋白(APP) β-分泌酶切割位…

政企办公「分水岭」以至,融云百幄数智化破局

中国政企数智办公平台行业研究报告 246 年前,亚当斯密便在《国富论》中提出,劳动分工是提高社会生产效率的主要原因。从工厂定岗,到国际分工,分工的价值已经深入社会生活和工作的方方面面。关注【融云RongCloud】,了解…