蓝桥杯每日一题:n-皇后问题(回溯)

n−皇后问题是指将 n 个皇后放在 n×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。

1_597ec77c49-8-queens.png

现在给定整数 n,请你输出所有的满足条件的棋子摆法。

输入格式

共一行,包含整数 n。

输出格式

每个解决方案占 n行,每行输出一个长度为 n的字符串,用来表示完整的棋盘状态。

其中 . 表示某一个位置的方格状态为空,Q 表示某一个位置的方格上摆着皇后。

每个方案输出完成后,输出一个空行。

注意:行末不能有多余空格。

输出方案的顺序任意,只要不重复且没有遗漏即可。

数据范围

1≤n≤9

输入样例:
4
输出样例:
.Q..
...Q
Q...
..Q...Q.
Q...
...Q
.Q..

 解题思路:

每次遍历每个格子,有两种选择放Q,不放Q。

如果放Q需要检查当前行,列,对角线,反对角线是否已被标记过。

对角线与反对角线表示:由于直线方程(斜率正负)有两种表达:y=x+b,y=-x+b;

正好对应着对角线与反对角线,不过在途中x为行,y为列需要互换一下。

参考代码:

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;
const int N = 10;
char g[N][N];
bool row[N],col[N],dg[N],udg[N];//行,列,正对角线(x+y),反对角线(n-y+x)
bool st[N];
int n;void dfs(int u,int x,int y)
{if(u>n) return;if(y==n) y = 0,x++;if(x==n){if(u==n){for(int i=0;i<n;i++) puts(g[i]);puts(" ");}return;}g[x][y] = '.';dfs(u,x,y+1);if(!row[x] && !col[y] && !dg[x+y] && !udg[n-y+x]){g[x][y] = 'Q';row[x] = col[y] = dg[x+y] = udg[n-y+x] = true;dfs(u+1,x,y+1);g[x][y] = '.';row[x] = col[y] = dg[x+y] = udg[n-y+x] = false;}
}int main()
{cin>>n;dfs(0,0,0);return 0;
}

 

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

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

相关文章

数据挖掘笔记

数据挖掘基础笔记 目录 数据获取 --> 探索分析与可视化 --> 预处理理论 --> 分析建模 --> 模型评估 一、数据获取手段 1.数据仓库数据库&#xff1a;面向业务存储针对应用 OLTP--online transaction processing组织规范数据仓库&#xff1a;面向主题存储针对分…

JS实现:计算字符串的字节数(UTF8编码)

2种常用方法 以下2种方法&#xff0c;只针对UTF-8编码&#xff0c;详细原因 请见后文的 关于编码。 // 方法1 function calculateUtf8ByteSize(str) {// 非字符串 不作计算if (typeof str ! string) return;// 定义变量&#xff0c;用于累加字节数let byteCount 0;// 遍历字…

Userpycharm 工程设置虚拟venv环境

在 PyCharm 中使用虚拟环境&#xff08;virtual environment&#xff0c;简称 venv&#xff09;非常简单。你可以按照以下步骤在 PyCharm 中配置并使用你的 venv 环境&#xff1a; 1. 打开项目&#xff1a;打开你的项目文件夹&#xff0c;确保你的虚拟环境已经创建在项目文件夹…

golang 协程池 动态扩缩容

参考 github.com/panjf2000/ants package mainimport ("fmt""sync""sync/atomic""time"_ "github.com/panjf2000/ants" )type pool struct {// 协程池最大容量cap int32// 当前运行的协程个数run int32block bool// 空闲…

主流电商平台开放接口:电商数据采集API获取淘宝商品详情描述主图SKU价格订单物流

API接口 返回值说明 item_get-获得淘宝商品详情 API 注册开通 taobao.item_get 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09…

矩阵链乘法问题

描述 输入 输入共n1行 第一行输入矩阵的总个数n[2,1000] 后n行分别输入矩阵的维数[1,100] 输出 最后一行输出少乘法次数 输入样例 1 6 30 35 35 15 15 5 5 10 10 20 20 25 输出样例1 15125 代码实现 #include<iostream> #include<vector> #include<…

基于ssm的星空游戏购买下载平台的设计与实现论文

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff0c;商品交易当然也不能排除在外&#xff0c;随着商品交易管理的不断成熟&#xff0c;它彻底改变了过去传统的经营管理方式&#xff0c;不仅使商品…

ES6中 Promise的详细讲解

文章目录 一、介绍状态特点流程 二、用法实例方法then()catchfinally() 构造函数方法all()race()allSettled()resolve()reject() 三、使用场景# 参考文献 一、介绍 Promise&#xff0c;译为承诺&#xff0c;是异步编程的一种解决方案&#xff0c;比传统的解决方案&#xff08;…

c++的学习之路:17、stack、queue与priority_queue

摘要 本文主要是介绍一下stack、queue、priority_queue的使用以及模拟实现&#xff0c;文章末附上代码以及思维导图。 目录 摘要 一、stack的介绍和使用 1、stack的介绍 2、stack的使用 3、stack的模拟实现 二、queue的介绍和使用 1、queue的介绍 2、queue的使用 3、…

算法训练营第34天|LeetCode 1005.K取反后最大化的数组和 134.加油站 135.分发糖果

LeetCode 1005.K取反后最大化的数组和 题目链接&#xff1a; LeetCode 1005.K取反后最大化的数组和 解题思路&#xff1a; 先处理负数&#xff0c;在处理最小的数。 代码&#xff1a; class Solution { public:int largestSumAfterKNegations(vector<int>& num…

uniapp引入微信小程序版本VantUI,使用VantUI的自定义tabbar,并解决自定义tabbar出现闪烁的情况

视频教程地址&#xff1a;https://www.bilibili.com/video/BV13m41167iG 1.uniapp引入微信小程序版本VantUI 去vant官网下载源码&#xff0c;源码放在github&#xff0c;自行去下载下来 https://vant-contrib.gitee.io/vant-weapp/#/home 在pages.json的globalStyle里面注册组…

php根据用户地址获取经纬度

记录&#xff1a;利用高德地图API&#xff0c;根据用户地址获取经纬度 API文档&#xff1a; https://lbs.amap.com/api/webservice/guide/api/georegeo 调用API代码 <?php /*** 服务器接口类*/ namespace queryAreaInfo;class queryArea{// 根据详细地址获取经纬度publi…

打印月历 Open Judge

题面链接: http://noi.openjudge.cn/ch0113/24/ 题目描述: 评析: 大模拟题&#xff0c;考察的是你的耐心和毅力&#xff01;很不错的模拟题练习题&#xff0c;小白(like me)可以练一练 思路: 先一个月一个月的模拟&#xff0c;求出来题目问的这个一年的这一个月的第一天是星期…

欧盟网络安全局:公共数据空间中的个人数据保护设计(上)

文章目录 前言一、背景:欧盟数据空间(一)欧盟数据空间的设计原则二、欧盟数据空间中数据保护的注意事项(一)欧盟数据空间关键术语(二)数据共享环境中输入隐私和输出隐私问题(三)数据保护工程的作用(四)数据空间中的数据保护影响评估(五)问责制的主要内容(六)通过…

Day30 回溯 LeedCode 332.重新安排行程 51. N皇后 37. 解数独 蓝桥杯 与或异或

332. 重新安排行程 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&#xff0c;所以该行程必须从 JFK…

python selenium向html中写入内容

js_kind document.getElementById("returnName1").innerHTML"盾构设备(B010101)" self.Driver.execute_script(js_kind) 通过JS注入HTML代码 如果想输入带html格式的文本可以通过js注入&#xff0c;代码如下&#xff1a; from selenium import webdrive…

Macos 部署自己的privateGpt(2024-0404)

Private Chatgpt 安装指引 https://docs.privategpt.dev/installation/getting-started/installation#base-requirements-to-run-privategpt 下载源码 git clone https://github.com/imartinez/privateGPT cd privateGPT安装软件 安装&#xff1a; Homebrew /bin/bash -c…

java内存模型-DCL

DCL DCL&#xff08;Double-Checked Locking&#xff09;是一种用于实现线程安全的延迟初始化的技术。在Java中&#xff0c;DCL通常用于单例模式的实现。 DCL的基本思想是通过两次检查锁来实现延迟初始化。在第一次检查时&#xff0c;如果对象已经被初始化了&#xff0c;那么…

径流场水土流失自动监测系统的使用

TH-LS1随着环保意识的日益增强&#xff0c;水土流失问题已经成为全球关注的焦点。水土流失不仅破坏了生态环境&#xff0c;还对农业生产、水资源保护等方面产生了严重影响。为了有效监测和控制水土流失&#xff0c;径流场水土流失自动监测系统应运而生。 一、径流场水土流失自…

希尔排序解读

在算法世界中&#xff0c;排序算法是至关重要的一部分。而希尔排序&#xff08;Shell Sort&#xff09;作为一种基于插入排序的改进算法&#xff0c;通过允许交换非相邻元素&#xff0c;从而在一定程度上提高了排序效率。本文将深入探讨希尔排序的原理、实现方式以及它的性能特…