【PAT甲级 - C++题解】1128 N Queens Puzzle

news2025/1/18 6:13:57

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📚专栏地址:PAT题解集合
📝原题地址:
题目详情 - 1128 N Queens Puzzle (pintia.cn)
🔑中文翻译:皇后问题
📣专栏定位:为想考甲级PAT的小伙伴整理常考算法题解,祝大家都能取得满分!
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

1128 N Queens Puzzle

The “eight queens puzzle” is the problem of placing eight chess queens on an 8×8 chessboard so that no two queens threaten each other. Thus, a solution requires that no two queens share the same row, column, or diagonal. The eight queens puzzle is an example of the more general N queens problem of placing N non-attacking queens on an N×N chessboard. (From Wikipedia - “Eight queens puzzle”.)

Here you are NOT asked to solve the puzzles. Instead, you are supposed to judge whether or not a given configuration of the chessboard is a solution. To simplify the representation of a chessboard, let us assume that no two queens will be placed in the same column. Then a configuration can be represented by a simple integer sequence (Q1,Q2,⋯,QN), where Qi is the row number of the queen in the i-th column. For example, Figure 1 can be represented by (4, 6, 8, 2, 7, 1, 3, 5) and it is indeed a solution to the 8 queens puzzle; while Figure 2 can be represented by (4, 6, 7, 2, 8, 1, 9, 5, 3) and is NOT a 9 queens’ solution.

在这里插入图片描述在这里插入图片描述
Figure 1Figure 2

Input Specification:

Each input file contains several test cases. The first line gives an integer K (1<K≤200). Then K lines follow, each gives a configuration in the format “N Q1 Q2 … QN”, where 4≤N≤1000 and it is guaranteed that 1≤QiN for all i=1,⋯,N. The numbers are separated by spaces.

Output Specification:

For each configuration, if it is a solution to the N queens problem, print YES in a line; or NO if not.

Sample Input:

4
8 4 6 8 2 7 1 3 5
9 4 6 7 2 8 1 9 5 3
6 1 5 2 6 4 3
5 1 3 5 2 4

Sample Output:

YES
NO
NO
YES

题意

给定 N 组数据,每组数据代表一个棋盘上皇后的分布情况,需要我们判断每个棋盘是否满足八皇后问题,即同一行、同一列和对角巷上不能同时存在两个及以上的皇后。

这样我们就可以用一个整数序列 Q1,Q2,…,QN 来表示一种棋盘摆放,其中 Qi 表示第 i 列的皇后所在的行号。

例如,图1的棋盘摆放可以用 (4, 6, 8, 2, 7, 1, 3, 5) 来表示,它是解决八皇后问题的一种合理摆放方案。

图2的棋盘摆放可以用 (4, 6, 7, 2, 8, 1, 9, 5, 3) 来表示,它并不是解决九皇后问题的一种合理摆放方案。

思路

我们可以通过三个数组来表示每一行,及正对角线上和反对角线上是否出现冲突情况。因为题目是按照每一列皇后给出的,所以不用判断每一列上是否同时存在皇后。

而每一行的判断方法就是每当传入一个皇后行的坐标,就将对应位置置为 1 ,如果已经为 1 ,则说明有冲突。

通过观察可以发现,在正对角线上的所有点的横坐标 x 与纵坐标 y 之和即 x+y 的值都相等,所以可以采用上面的方法进行冲突判断。

而在反对角线上的所有点的横坐标 x 与纵坐标 y 之差的值相等,但是可能会出现负数,无法用数组下标表示,所以还需要加上一个偏移量 n 使之变成正数再继续判断。

代码

#include<bits/stdc++.h>
using namespace std;

const int N = 1010;
bool row[N], dg[N * 2], udg[N * 2];	//对角线需要2*N

int main()
{
    int n;
    cin >> n;

    //判断每一组数据
    for (int i = 0; i < n; i++)
    {
        //初始化数组
        memset(row, 0, sizeof row);
        memset(dg, 0, sizeof dg);
        memset(udg, 0, sizeof udg);

        //检验冲突
        int m;
        cin >> m;
        bool success = true;
        for (int y = 1; y <= m; y++)
        {
            int x;
            cin >> x;
            //判断是否有冲突
            if (row[x] || dg[x + y] || udg[y - x + m]) success = false;
            row[x] = dg[x + y] = udg[y - x + m] = true;
        }

        //输出判断结果
        if (success) puts("YES");
        else puts("NO");
    }

    return 0;
}

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

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

相关文章

第9章 无线网络和移动网络

目录 9.1 无线局域网 WLAN 9.1.1 无线局域网的组成 1. 无线局域网 WLAN (Wireless Local Area Network) 2. IEEE 802.11 3. 移动自组网络 9.1.2 802.11 局域网的物理层 9.1.3 802.11 局域网的 MAC 层协议 1. CSMA/CA 协议 2. 时间间隔 DIFS 的重要性 3. MAC两个子层…

acwing基础课——Floyd

由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板3——搜索与图论 - AcWing 基本思想&#xff1a; floyd算法的原理是基于动态规划的基础上实现的&#xff0c;因为是稠密图我们通过邻接矩阵来存储&#xff0c;我们将各点距离初始化为正无穷(该点到自己的距离为0)&…

软件测试基础理论体系学习8-什么是验收测试?验收测试的内容是什么?过程是什么?有什么测试策略?

8-什么是验收测试&#xff1f;验收测试的内容是什么&#xff1f;过程是什么&#xff1f;有什么测试策略&#xff1f;1 验收测试的主要内容1.1 简介和说明1.2 验收测试的目的1.3 验收测试的任务1.4 验收测试主要内容1.4.1 验收测试标准1.4.2 配置复审1.4.3 α、β测试2 验收测试…

基于intel低功耗平台边缘计算解决方案助力半导体设备升级

半导体芯片是现代电子领域的大脑。事实上&#xff0c;在通信、计算、零售、医疗保健和运输应用领域&#xff0c;半导体芯片为各种先进技术提供了基础。2020年全球半导体销售额增长6.5%&#xff0c;相关制造设备的生产需求也相应增加。 某业内日本半导体设备制造厂商&#xff0…

营销不知道怎么做,不妨试试社交新零售电商结合新型引流模式

大家好&#xff0c;我是林工&#xff0c;如今移动互联网的快速发展为社交媒体分销提供了生根发芽的土壤&#xff0c;人们不仅仅满足于单方面的购物消费&#xff0c;开始利用社交属性&#xff0c;出现了具有强大带货能力和分销能力的人群&#xff0c;也就是当时的代购和微商&…

BEVFormer-accelerate:基于EasyCV加速BEVFormer

作者&#xff1a;贺弘 夕陌 谦言 临在 导言 BEVFormer是一种纯视觉的自动驾驶感知算法&#xff0c;通过融合环视相机图像的空间和时序特征显式的生成具有强表征能力的BEV特征&#xff0c;并应用于下游3D检测、分割等任务&#xff0c;取得了SOTA的结果。我们在EasyCV开源框架&…

【MySQL自学之路】第3天——MySQL数据库服务的基本操作

目录 前言 数据库的初始化 添加环境变量 数据库配置文件的编写【my.ini】 初始化MySQL服务 MySQL服务操作 安装一个MySQL服务 删除一个MySQL服务 开启你的MySQL服务 关闭你的MySQL服务 查看电脑中存在的MySQL服务 其他操作 登录数据库 修改密码 登录跳过密码验证…

Hi3861开发遇到的小问题及解决方法和一些小技巧

开发过程中的学习 一、硬件支持开启&#xff08;替换文件&#xff09; &#x1f604; 在D:\ubuntu2004Harmony镜像中通过vscode 使用编译命令 python build.py wifiiot是存在一个小问题 No option ‘riscv32-unknown-elf-gcc_path’ in section: ndk’ ” 而在E:\鸿蒙资料\鸿蒙…

[附源码]Python计算机毕业设计儿童绘本租赁网站Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

基于jsp+mysql+ssm工程车辆租赁系统-计算机毕业设计

项目介绍 随着现代工程车租赁的快速发展&#xff0c;可以说工程车租赁已经逐渐成为现代工程车租赁过程中最为重要的部分之一。但是一直以来我国传统的工程车租赁并没有建立一套完善的行之有效的工程车租赁系统&#xff0c;传统的工程车租赁已经无法适应高速发展&#xff0c;无…

Idea制作docker镜像

一、配置docker远程访问 1.在linux系统中查找docker.service文件&#xff0c;使用命令&#xff1a;find / -name docker.service 2.编辑 /usr/lib/systemd/system/docker.service文件&#xff0c;在ExecStart/usr/bin/dockerd后面添加 -H tcp://0.0.0.0:2375 3.重新加载dock…

持续盈利背后,水滴“新增长”难寻?

配图来自Canva可画 近年来随着互联网红利消失&#xff0c;越来越多的互联网企业回归效益&#xff0c;开始将“降本增效”纳入了议事日程之中&#xff0c;这不仅体现在BAT等一众大厂的财报中&#xff0c;就连水滴等互联网领域的“后起之秀”也在争相效法。 作为过去几年有名的…

最受欢迎的工具-从burp到支付和暴破

文章目录一、封神台七1、认识burp2、功能3、burp字体设置4、尝试抓包/改包&#xff08;支付&#xff09;5、尝试抓包改包&#xff08;暴力破解&#xff09;一、封神台七 1、认识burp 浏览器和相关应用程序的中间拦截、修改、重放数据包的代理工具 2、功能 1、拦截本机8080端…

[译]Ceph性能优化之CPU核数对性能的影响 - Part 1

原文链接 知乎专栏: [译]Ceph性能优化之CPU核数对性能的影响 - Part 1 - 知乎 简介 Ceph在很多方面都做得很好&#xff0c;但从来没有人意识到它有极低的资源消耗。Ceph需要做一些工作来确保数据的一致性&#xff0c;以及如何将数据(PG)放到合适的位置。我们正在努力优化Cep…

制作一个简单HTML传统端午节日网页(HTML+CSS)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

tensorflow学习笔记一

1、tensorflow中的数据类型 import tensorflow as tf import numpy as np# 张量可以是数字、列表、ndarray# 使用列表创建张量 print(tf.constant([2,3])) print(tf.constant([[2,3],[1,4]]))# tensorflow2 默认使用Eager动态图机制 print(type(tf.constant([[2,3],[1,4]])))# …

springcloud(gateway限流)

目录 1. 限流的使用场景2. gateway限流实现 2.1 前提&#xff1a;2.2 导入依赖包2.3 在项目配置文件中配置redis2.4 开发限流需要的Bean2.5 为服务配置限流参数2.6 压力测试3. 熔断 3.1 熔断的使用场景3.2 熔断配置 1. 限流的使用场景 为什么限流 限流就是限制流量&#xff0c…

SQL学习

一、SQL怎么运行的&#xff1a;1、执行顺序2、MySQL 基本架构概览3、Server 层基本组件介绍4、语句分析二、索引&#xff08;index&#xff09;1、索引的使用成本2、语法3、删除索引三、分析函数1、聚合分析函数2、排名分析函数3、数学分析函数4、行比较分析函数四、PLSQL五、c…

SpringCloud - 整合Nacos启动报错Consider defining a bean of type IClientConfig

SpringCloud - 整合Nacos启动报错Consider defining a bean of type IClientConfig前言一. 尝试解决Bug的几种不合适方案1.1 添加ribbon依赖1.2 按照提示增加IClientConfig配置1.3 正确答案前言 我写了一套网关服务&#xff0c;一模一样的代码在自己电脑和公司电脑都写了一份。…

(附源码)Springboot网络空间安全实验教学示范中心网站 毕业设计 111454

Springboot网络空间安全实验教学示范中心网站 摘 要 本课题研究的网络空间安全实验教学示范中心网站&#xff0c;主要功能模块包括&#xff1a;实验课程管理、实验报告结果管理、实验课程信息、实验课程报告、联系老师、回复学生等&#xff0c;采取面对对象的开发模式进行软件的…