当前位置: 首页 > news >正文

2. 皇后的控制力

题目描述:

我们对八皇后问题进行扩展。

国际象棋中的皇后非常神勇,一个皇后可以控制横、竖、斜线等4个方向(或者说是8个方向),只要有棋子落入她的势力范围,则必死无疑,所以对方的每个棋子都要小心地躲开皇后的势力范围,选择一个合适的位置放置。如果在棋盘上有两个皇后,则新皇后控制的势力范围与第一个皇后控制的势力范围可以进行叠加,这样随着皇后数量的增加,皇后们控制的范围越来越大,直至控制了棋盘中全部的格子。

现在我们关心的是,如果在 N×N 的棋盘上放入 M 个皇后(M个皇后相互之间不能冲突)控制棋盘中的格子,则共有多少种不同的放置方法?

输入:N (N <= 10)  M (M <= N)

输出:如果将 M 个皇后放入 N×N 的棋盘中可以控制全部棋盘中的格子,则不同的放置方法的数量

测试输入期待的输出时间限制内存限制额外进程
测试用例 1以文本方式显示
  1. 2 1↵
以文本方式显示
  1. 4↵
1秒64M0
测试用例 2以文本方式显示
  1. 3 1↵
以文本方式显示
  1. 1↵
1秒64M0

C++代码 

#include <iostream>
#include <vector>using namespace std;int totalSolutions = 0; // 用于记录不同的放置方法的数量// 检查当前位置是否安全
bool isSafe(int row, int col, const vector<string>& board, int N) {// 检查列for (int i = 0; i < row; ++i) {if (board[i][col] == 'Q') {return false;}}// 检查左上对角线for (int i = row, j = col; i >= 0 && j >= 0; --i, --j) {if (board[i][j] == 'Q') {return false;}}// 检查右上对角线for (int i = row, j = col; i >= 0 && j < N; --i, ++j) {if (board[i][j] == 'Q') {return false;}}return true;
}bool checkControl(const vector<string>& board, int N) {for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {if (board[i][j] == '.') {// 检查当前空点是否被控制bool controlled = false;// 检查列for (int k = 0; k < N; ++k) {if (board[k][j] == 'Q') {controlled = true;break;}}// 检查行for (int k = 0; k < N; ++k) {if (board[i][k] == 'Q') {controlled = true;break;}}// 检查左上对角线for (int k = i, l = j; k >= 0 && l >= 0; --k, --l) {if (board[k][l] == 'Q') {controlled = true;break;}}// 检查右上对角线for (int k = i, l = j; k >= 0 && l < N; --k, ++l) {if (board[k][l] == 'Q') {controlled = true;break;}}// 检查左下对角线for (int k = i, l = j; k < N && l >= 0; ++k, --l) {if (board[k][l] == 'Q') {controlled = true;break;}}// 检查右下对角线for (int k = i, l = j; k < N && l < N; ++k, ++l) {if (board[k][l] == 'Q') {controlled = true;break;}}if (!controlled) {// 如果有任何空点没有被控制,则返回falsereturn false;}}}}// 所有空点都被控制,返回truereturn true;
}// 递归解决问题
void solveNQueensUtil(int row, int N, int M, vector<string>& board) {if (row == N) {if (M == 0 && checkControl(board, N)) {totalSolutions++; // 找到一个解决方案}return;}// 尝试在当前行的每一列放置皇后for (int i = 0; i < N; ++i) {if (isSafe(row, i, board, N)) {board[row][i] = 'Q'; // 放置皇后solveNQueensUtil(row + 1, N, M - 1, board); // 递归到下一行board[row][i] = '.'; // 回溯,移除皇后}}// 如果当前行不放置皇后,也递归到下一行solveNQueensUtil(row + 1, N, M, board);
}// 解决N皇后问题
int solveNQueens(int N, int M) {vector<string> board(N, string(N, '.'));solveNQueensUtil(0, N, M, board);return totalSolutions;
}int main() {int N, M;cin >> N >> M;cout <<  solveNQueens(N, M) << endl;return 0;
}

相关文章:

2. 皇后的控制力

题目描述&#xff1a; 我们对八皇后问题进行扩展。 国际象棋中的皇后非常神勇&#xff0c;一个皇后可以控制横、竖、斜线等4个方向&#xff08;或者说是8个方向&#xff09;&#xff0c;只要有棋子落入她的势力范围&#xff0c;则必死无疑&#xff0c;所以对方的每个棋子都要…...

南京邮电大学数据库实验二

1. 用create database命令创建电影数据库(MovieDB)。 create database MovieDB; 在创建表之前需调用一下指定的数据库&#xff1a; use MovieDB; 2.在电影数据库中用create table 命令创建如下5个关系模式&#xff1a; 创建movies表&#xff1a; create table Movies( ti…...

数据库 02-03 补充 SQL的子查询(where,from),子查询作为集合来比较some,exists,all(某一个,存在,所有)

子查询&#xff1a; where字句的子查询&#xff1a; 通常用in关键字&#xff1a; 举个例子&#xff1a; in关键字&#xff1a; not in 关键字&#xff1a; in 也可以用于枚举集合&#xff1a; where中可以用子查询来作为集合来筛选元祖。 some&#xff0c;all的运算符号…...

提升英语学习效率,尽在Eudic欧路词典 for Mac

Eudic欧路词典 for Mac是一款专为英语学习者打造的强大工具。无论您是初学者还是高级学习者&#xff0c;这款词典都能满足您的需求。 首先&#xff0c;Eudic欧路词典 for Mac具备丰富的词库&#xff0c;涵盖了各个领域的单词和释义。您可以轻松查询并学习单词的意思、用法和例…...

计算机网络英文总结

物理层 数据链路层 循环冗余校验(Cyclic Redundancy Check) 点对点协议PPP(Point-to-Point Protocol) 链路控制协议(Link Control Protocol) 网络控制协议(Network Control Protocol) 网络层(network layer) IP(Internet Protocol) 网际协议 ARP(Address…...

Spring上下文之注解模块ConfigurationMethod

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…...

【深度学习】强化学习(三)强化学习的目标函数

文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略&#xff08;Policy&#xff09;4、马尔可夫决策过程5、强化学习的目标函数1. 总回报&#xff08;Return&#xff09;2. 折扣回报&#xff08;Discounted Return&#xff09;a. 折扣率b. 折扣回报的定义 3.…...

Python高级算法——人工神经网络(Artificial Neural Network)

Python中的人工神经网络&#xff08;Artificial Neural Network&#xff09;&#xff1a;深入学习与实践 人工神经网络是一种模拟生物神经网络结构和功能的计算模型&#xff0c;近年来在机器学习和深度学习领域取得了巨大成功。本文将深入讲解Python中的人工神经网络&#xff…...

深入理解JVM设计的精髓与独特之处

这是Java代码的执行过程 从软件工程的视角去深入拆解&#xff0c;无疑极具吸引力&#xff1a;首个阶段仅依赖于源高级语言的细微之处&#xff0c;而第二阶段则仅仅专注于目标机器语言的特质。 不可否认&#xff0c;在这两个编译阶段之间的衔接&#xff08;具体指明中间处理步…...

fastjson序列化与反序列化的忽略

一.场景 做了一个基于springbootfastjson的小应用。A对象与B对象是OneToMany关系。A对象新增时也希望一起传递B的信息到后台进行Many端数据的新增。直接使用A对象来接收前台传递的信息&#xff0c;springboot会帮我们组装好对象。查询A对象时&#xff0c;又不希望其中的List<…...

【TB作品】基于单片机的实验室管理系统,STM32,GM65二维码扫描模块

硬件&#xff1a; &#xff08;1&#xff09;STM32F103C8T6最小板&#xff08;&#xff09; &#xff08;2&#xff09;GM65二维码扫描模块 &#xff08;3&#xff09;DS1302实时时钟模块 &#xff08;4&#xff09;AT24C02 存储设备 &#xff08;5&#xff09;蜂鸣器 &#xf…...

超过 1450 个 pfSense 服务器因错误链而遭受 RCE 攻击

在线暴露的大约 1450 个 pfSense 实例容易受到命令注入和跨站点脚本漏洞的攻击&#xff0c;这些漏洞如果链接起来&#xff0c;可能使攻击者能够在设备上执行远程代码。 pfSense 是一款流行的开源防火墙和路由器软件&#xff0c;允许广泛的定制和部署灵活性。 它是一种经济高效…...

react面试总结2

redux中sages和thunk中间件的区别&#xff0c;优缺点 Redux 中的 redux-saga 和 redux-thunk 都是中间件&#xff0c;用于处理异步操作&#xff0c;但它们有一些区别。 Redux Thunk&#xff1a; 简单易用&#xff1a;redux-thunk 是比较简单直观的中间件&#xff0c;它允许 …...

hive 常见存储格式和应用场景

1.存储格式 textfile、sequencefile、orc、parquet sequencefile很少使用&#xff08;不介绍了&#xff09;&#xff0c;常见的主要就是orc 和 parquet 建表声明语句是&#xff1a;stored as textfile/orc/parquet行存储&#xff1a;同一条数据的不同字段都在相邻位置&#xff…...

PyPDF2库对PDF实现读取的应用

目录 一、PyPDF2 库的使用 1. 文档打开和页面读取 2. 文本提取功能 3. 示例代码...

C++ stack用法详解

stack 栈适配器是一种单端开口的容器&#xff08;如图 1 所示&#xff09;&#xff0c;实际上该容器模拟的就是栈存储结构&#xff0c;即无论是向里存数据还是从中取数据&#xff0c;都只能从这一个开口实现操作。 图 1 stack 适配器示意图 如图 1 所示&#xff0c;stack 适配器…...

QT案例 使用WMI获取win_32类的属性值,包括Win32提供程序类中的属性

最近涉及到读取WINDOWS 系统电脑设备的各种信息&#xff0c;在一些特殊的PE或者简化系统中是没有WMI查询工具的&#xff0c;所以就自己写了个查询大部分WMI属性值的工具&#xff0c;免去了查网站的功夫。涉及到的方法内容就汇总做个总结。 PS:因为工作中软件基本都是我一个人开…...

TCP/UDP 的特点、区别及优缺点

1.TCP协议 传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议通过建立连接、数据确认&#xff08;编段号和确认号&#xff09;和数据重传等机制&#xff0c;保证了数据的可靠性…...

使用 Python 使用贝叶斯神经网络从理论到实践

一、说明 在本文中&#xff0c;我们了解了如何构建一个机器学习模型&#xff0c;该模型结合了神经网络的强大功能&#xff0c;并且仍然保持概率方法进行预测。为了做到这一点&#xff0c;我们可以构建所谓的贝叶斯神经网络。 这个想法不是优化神经网络的损失&#xff0…...

Linux 中的网站服务管理

目录 1.安装服务 2.启动服务 3.停止服务 4.重启服务 5.开机自启 6.案例 1.安装服务 网址服务程序 yum insatll httpd -y 查看所有服务 systemctl list-unit-files 2.启动服务 systemctl start httpd 查看服务进程&#xff0c;确认是否启动 ps -ef|grep httpd 3.停止…...

阿里云cdn设置相同的域名路径访问不同的oss目录

1.设置回源配置&#xff0c;添加回源URL改写 2.设置跨域&#xff0c;cdn的跨域优先oss 3.回源设置...

提示(Prompt)工程中提示词的开发优化基础概念学习总结

本文对学习过程进行总结&#xff0c;仅对基本思路进行说明&#xff0c;结果在不同的模型上会有差异。 提示与提示工程 提示&#xff1a;指的是向大语言模型输入的特定短语或文本&#xff0c;用于引导模型产生特定的输出&#xff0c;以便模型能够生成符合用户需求的回应。 提示…...

C#基础——语法学习

C#的基本语法 在介绍基本语法之前我们先来大概讲一下创建好的这些文件都是做什么的 .sln文件&#xff1a;将项目和解决方案项结合到一起 .vs文件夹&#xff1a;用来存储当前解决方案中关于用户的设置和自定义项&#xff0c;比如断点&#xff0c;主题等。&#xff08;一般都将其…...

vue-实现高德地图-省级行政区地块显示+悬浮显示+标签显示

<template><div><div id"container" /><div click"showFn">显示</div><div click"removeFn">移除</div></div> </template><script> import AMapLoader from amap/amap-jsapi-load…...

flutter ‘Gradle Libs‘ was added by build file ‘app/build.gradle‘

相关问题解释文章 How to prefer settings.gradle repositories over build.gradle repositoriesMode 解释 问题描述 此问题是&#xff0c;直接创建的flutter项目&#xff0c;需要配置其他的maven仓库地址&#xff0c;和第三方module&#xff0c;结果始终都是无法成功 错误…...

Java中的链式编程风格与应用案例

引言 链式编程是一种在编程中经常使用的风格&#xff0c;它可以使代码更加简洁、易读和易于维护。在Java中&#xff0c;链式编程可以通过方法链的方式来实现。本文将介绍Java中的链式编程风格&#xff0c;并通过几个应用案例来说明其实际应用。 一、链式编程的概念与特点 链式…...

MTK Android P Sensor架构(一)

需求场景&#xff1a; 本来如果只是给传感器写个驱动并提供能读取温湿度数据的节点&#xff0c;是一件比较轻松的事情&#xff0c;但是最近上层应用的同事要求我们按照安卓标准的流程来&#xff0c;这样他们就能通过注册一个服务直接读取传感器事件数据了。这样做的好处就是第…...

低代码开发与传统软件开发:未来趋势与竞争格局

近年来&#xff0c;低代码开发平台的快速发展引起了各行各业的广泛关注。低代码开发平台简化了软件开发的复杂性&#xff0c;提供了更快速、更灵活的开发方式。于是&#xff0c;许多人开始产生一个疑问&#xff1a;未来低代码开发是否会取代传统软件开发&#xff1f;今天这篇文…...

leetcode 股票问题全序列

1 只允许一次交易&#xff0c;121题&#xff0c;买卖股票的最佳时机 class Solution {/*给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票…...

SpringBoot中日志的使用log4j2

SpringBoot中日志的使用log4j2 1、log4j2介绍 Apache Log4j2 是对 Log4j 的升级&#xff0c;它比其前身 Log4j 1.x 提供了重大改进&#xff0c;并提供了 Logback 中可用的许多改 进&#xff0c;同时修复了 Logback 架构中的一些问题&#xff0c;主要有&#xff1a; 异常处理…...

便宜做外贸网站/深圳海外推广

第6周 文章目录第6周[toc] 十、应用机器学习的建议(Advice for Applying Machine Learning)10.1 决定下一步做什么10.2 评估一个假设10.3 模型选择和交叉验证集10.4 诊断偏差和方差10.5 正则化和偏差/方差10.6 学习曲线10.7 决定下一步做什么十一、机器学习系统的设计(Machine …...

外贸哪些免费网站开发客户/注册公司网上申请入口

background-image 属性是 CSS 的一个用于为元素设置背景图片的属性。语法如下&#xff1a; background-image: url(image.jpg);其中 url(image.jpg) 就是指定图片的地址。可以使用相对路径或绝对路径&#xff0c;也可以使用其他图片引用方式&#xff0c;如 data URI。 使用 bac…...

搜索引擎wordpress/seo网站建设优化

1.下面是Sping技术栈所包含的技术框架图 2.Spring Boot的一些知识点 3.Spring Boot 推荐的基础 POM 文件 名称说明spring-boot-starter核心 POM,包含自动配置支持、日志库和对 YAML 配置文件的支持。spring-boot-starter-amqp通过 spring-rabbit 支持 AMQP。spring-boot…...

海宁公司做网站/百度搜索网站排名

【一】 在新乐谱的第一小节开始添加一个全音符的中央C No.1 在New里新建一个插件 5/建中央C &#xff08;User copy&#xff09; No.2 双击打开 点run运行里输入代码 如图&#xff1a; No.3 点击ok 然后close关闭 No.4 点菜单栏的Plug-ins里 我新建的5插件 No.6 运行后就是这…...

广州做网站怎么样/seo成功案例分析

STL 故名思意标准模板库&#xff08;Standard Template Library&#xff09; #include <bits/stdc.h> //万能头文件常见使用方式&#xff1a; pair pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。&#xff08;…...

遵义在线网站建设/微博营销成功案例8个

这篇文章解决的问题 作者认为&#xff0c;之前的工作都将源推文独立的建模&#xff0c; 而没有考虑不同节点之间的影响&#xff0c;所以没有很好的表示出不同节点之间的关系 作者如何解决这个问题的 作者提出了一个全局-局部的注意力网络&#xff08;GLAN来检测谣言&#xf…...