蓝桥杯 试题 算法训练 N皇后问题(C++)

搜索与回溯算法之八皇后问题 搜索与回溯算法之八皇后问题 问题 要在国际象棋棋盘中放八个皇后,使任意两个皇后都不能互相吃。(提示:皇后能吃同一行、同一列、同一对角线的任意棋子。) 放置第i个(行)皇后的算法为: int search(i);  {    int j;    for (第i个皇后的位置j=1;j<=8;j++ ) //在本行的8列中去试    if (本行本列允许放置皇后)     {      放置第i个皇后; 对放置皇后的位置进行标记;      if (i==8) 输出 阅读详情

试题 算法训练 N皇后问题

题目描述

资源限制
时间限制:100ms 内存限制:256.0MB

问题描述
  在 N ∗ N N*N N∗N的方格棋盘放置了 N N N个皇后,使得它们不相互攻击(即任意 2 2 2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成 45 45 45角的斜线上。你的任务是,对于给定的 N N N,求出有多少种合法的放置方法。
  
输入格式
  输入中有一个正整数 N ≤ 10 N≤10 N≤10,表示棋盘和皇后的数量
  
输出格式
  为一个正整数,表示对应输入行的皇后的不同放置数量。
  
样例输入
5 5 5

样例输出
10 10 10

数据规模和约定
   N ≤ 10 N≤10 N≤10

算法代码

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

const int N = 15;

int n;
bool g[N][N];
int cnt;

bool check(int x, int y) {
    // 判断列
    for (int i = 1; i < x; i++) {
        if (g[i][y]) return false;
    }
    // 判断对角线
    for (int i = 1; i < n; i++) {
        int nx = x - i, ny = y - i;
        if (nx > 0 && ny > 0)
            if (g[nx][ny]) return false;
    }

    for (int i = 1; i < n; i++) {
        int nx = x - i, ny = y + i;
        if (nx > 0 && ny <= n)
            if (g[nx][ny]) return false;
    }

    return true;
}

void back(int l) {
    if (l == n + 1) {
        cnt++;
        return;
    }

    for (int i = 1; i <= n; i++) {
        if (check(l, i)) {
            g[l][i] = true;
            back(l + 1);
            g[l][i] = false;
        }
    }
}


int main() {
    cin >> n;
    back(1);
    cout << cnt << endl;
    return 0;
}

算法思路

直接暴力递归即可,没啥思路(╯°□°)╯︵ ┻━┻
back(i)的i表示的是当前遍历的层数为i

C++ N 皇后问题求解算法及代码 使用回溯法是一种常见的解决思路,它通过逐个尝试可能的解决方案,并在不符合条件时进行回溯,继续尝试其他可能的解决方案。对于 N 皇后问题,我们可以使用一个一维数组 queens 来表示每一行皇后的列位置,queens[i] 表示第 i 行皇后所在的列。N 皇后问题是一个经典的回溯算法问题,在一个 N×N 的棋盘上放置 N 个皇后,使得它们互相之间不能相互攻击,即任意两个皇后不会处于同一行、同一列或同一条对角线上。使用上述代码,我们可以通过输入 N 的值来求解 N 皇后问题,并打印出所有的解法。 阅读详情

相关推荐

k8s部署 普罗米修斯(Prometheus)监控

Prometheus是一个开源的服务监控系统和时序数据库其提供了通用的数据模型和快捷数据采集、存储和查询接口它的核心组件Prometheus服务器定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉 取数据新拉取到啊的 数据大于配置的内存缓存区时,数据就会持久化到存储设备当中。

D2961953033的博客 3856

C++递归法解决八皇后问题的超详细解答

博主初学C++数据结构与算法(清华大学出版社)第四版,由于程序清单5-2没有详细解答且代码不完整,思考了一个早上才恍然大悟,深感自己阅读代码以及写代码能力的不足,并在此记录,同时也希望也能帮到有需要的人! 1、什么是八皇后问题? 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。例如下左图所示: 可见,每个皇后所处...

gyros 3万+

避开LLC环路设计三大坑:从K因子法看谐振频率选择与相位裕度优化

本文深入剖析LLC谐振变换器环路设计中易犯的三大误区,重点阐述如何运用K因子法优化谐振频率选择与相位裕度。文章通过实际案例,解析了工作区域选择、右半平面零点规避及补偿器相位基准等关键问题,为工程师提供了一套系统性的稳定环路设计方法,确保电源在动态负载下可靠工作。

qsc9012345的博客 264

pta n皇后(回溯/递归)

对于皇后问题有的只要判断有多少种排列,有的要输出所有符合的图,本文我们将该两种问题代码及解题思路都给出来哦。 pta题目: 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 你的任务是,对于给定的N,求出有多少种合法的放置方法 输入格式: 共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量; 输出格式: 共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量 输入样例: 在这里给出一组输入。例

weixin_51638679的博客 1788

QuickFix Java 讲解(五)消息的收发与查看

本系列力求手把手教你怎样利用QuickFix Java 搭建自己的 FIX 协议收发平台,以及其中的注意事项。 所有源码的地址(免费): https://github.com/zongzhec/QuickFixPractise 这节我们讨论将Acceptor和Initiator启动以后,收到的消息极其查看方式。 6. 收发双方的通信 6.1. 启动后的通信和登录 为方便起见,这里我们使用统一的源码:https://github.com/zongzhec/QuickFixPractise ..

2247

【Niagara Vykon N4 】物联网学习 03照明控制及照明时间表

3.1 设计思路 3.2逻辑组件添加 ①依据原有控制照明逻辑,打开palette,找到schedule模块,添加BoolenSchedule。 ②打开kitContrl,找到Util,并添加BoolenSwitch。 ③剪切到原有的逻辑线,并进行逻辑连接,如下图。 ④新建BooleanWritable,命名为Switch,设置参数并进行逻辑连接,若下图。 3.3界面设计 ⑤至此完成了逻辑的设...

weixin_45217107的博客 2863

ACWing n-皇后问题

n−n−皇后问题是指将nn个皇后放在n×nn×n的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数nn,请你输出所有的满足条件的棋子摆法。 输入格式 共一行,包含整数nn。 输出格式 每个解决方案占nn行,每行输出一个长度为nn的字符串,用来表示完整的棋盘状态。 其中.表示某一个位置的方格状态为空,Q表示某一个位置的方格上摆着皇后。 每个方案输出完成后,输出一个空行。 注意:行末不能有多余空格。 输出方...

Stillboring的博客 2481

【回眸】Tessy集成测试软件使用指南(一)新手使用篇

这个专栏的文章前4篇都在记录如何使用Tessy进行单元测试,集成测试需要有一定单元测试基础,且做集成测试之前,需要做好单元测试,否则将会大幅增加软件单元代码纠错的代价。集成测试所花费的时间通常远远超过单元测试。如果直接从单元测试到系统测试,结果往往是不理想的。集成测试可以检测由于单元相互交互而导致的错误,通常由一组专业的测试人员执行。

啤酒鸭的物联网开发记录博客 5288

试题 算法训练 车的放置(蓝桥杯c++)

问题描述   在一个n*n的棋盘中,每个格子中至多放置一个车,且要保证任何两个车都不能相互攻击,有多少中放法(车与车之间是没有差别的) 输入格式   包含一个正整数n 输出格式   一个整数,表示放置车的方法数 样例输入 2 样例输出 7 数据规模和约定   n<=8   【样例解释】一个车都不放为1种,放置一个车有4种,放置2个车有2种。 算法思路: 这道题考察的是搜索回溯算法,我们都知道在象棋里车的攻击方式是直线行的,也就是说,只要不把他们放在同一行或者同一列就可以避免相互攻击,从题中我们可以了解

q1430186623的博客 5576

C#项目实战——YModem协议文件传输【实例】

1、先由上位机发送*update*的握手信号,下位机返回响应字符‘C’(字符C,ASII码为0x43),之后通信双方开始以YMODEM协议进行数据通信。2、 YMODEM协议格式说明(1)起始帧数据格式帧类型(1byte)帧序号帧序号反码传输的文件名文件大小数据CRCSOH00FFfilenamefileziseNULCRCSOH=0x01,表示这个数据帧中包含着128个字节的数据(STX表示1024字节,初始帧只有128个);00表示数据帧序号,初始是0,依次向下排。

做有价值的事,积累有价值的笔记! 3656

25 - GRACE Mascon数据缺失月份数据插值

本篇基于文章的相关内容和文章公开的奇异谱分析(SSA)插值算法程序包,对grace Mascon数据种缺失的月份进行 插值 ,总结了使用程序包的相关过程,可以将该程序应用到其他数据处理插值计算中。

weixin_43339605的博客 1843

蓝桥杯练习系统:试题 算法训练 N皇后问题

.查看样例该处使用的vip的数据。 intputs outputs 0 0 4 2 5 10 8 92 10 724 2 0 3 0 6 4 7 40 9 352总结 前言 小龙🐉看了acwing图论一章,发现n皇后问题在[”蓝桥杯“练习系统](http://lx.lanqiao.cn/)出现过,又把它拿出来看了看。 提示:以下是本篇.

小鸡不好惹的博客 487

计算机网络实验报告实验七可靠传输TCP协议分析

计算机网络实验报告实验七可靠传输TCP协议分析

m0_56638814的博客 966

全球变暖(蓝桥杯2018年省赛B组试题I)(C/C++)

全球变暖(蓝桥杯2018年省赛B组试题I)(C/C++)

m0_71934846的博客 4247

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

试题 算法训练 搬走要石(蓝桥杯C++)

试题 算法训练 搬走要石(蓝桥杯C++)资源限制问题描述输入输出格式如何改变文本的样式数据规模和约定解题(使用C++解题) 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 **   住在有顶天的天人Tensi对自己的住处很不满。终于有一天她决定把门前碍眼的要石通通丢掉(怒扔要石)。控制要石自然是很容易的事,不过也会消耗灵力。假设搬走一块质量为1的要石会消耗1点灵力,而且由于要石都是连着放置的缘故所以每次除了搬走一颗,也可以搬走连续的任意数量的要石,自然质量是算在一起的。现在Tensi准

qq_46704948的博客 1576

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【算法】Java蓝桥杯试题练习 算法训练组 《数字游戏》(回溯法)

关于蓝桥杯官网的算法训练组中的一道题目《数字游戏》的Java的回溯解法。 题目链接 :蓝桥杯算法训练

CodeCodeBond的博客 806

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

试题 算法训练 阶乘(蓝桥杯C++)

试题 算法训练 阶乘资源限制一级目录二级目录三级目录 资源限制 时间限制:1.0s 内存限制:256.0MB 一级目录 二级目录 三级目录

qq_46704948的博客 1067

蓝桥杯算法训练 礼物 C++实现

我标黄的那个1,我们再回顾一下,在分区内的所有数列都小于等于S是吧,正我们的意,如果我们以黄色的5为分界点,左边是标红的部分,右边是标绿的部分,那么我们最优的解法就是10。同学们注意题目可以发现,题目中给出的要求是 选择连续的2*k个数组,所以我们要保证两边都是k个数,且最后的2*k一定是个偶数。通过上一节的分区,同学们可能就会有思路了,题目中给出的要求是:取走连续的石头,所以有的同学就会所以然的。在分区的过程中,我们维护一个b数组,b数组中,存放的是数组指向每一位的分区的长度。

m0_74362844的博客 2100

C语言实现 蓝桥杯 算法训练 最大质因数

试题 算法训练 最大质因数                                ...

xyf0209的博客 1972

蓝桥杯C++——试题 算法训练 素因子去重

蓝桥杯试题集试题汇总(C++) 问题描述   给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式   一个整数,表示n 输出格式   输出一行,包含一个整数p。 样例输入 1000 样例输出 10 数据规模和约定   n<=10^12   样例解释:n=1000=2^3*5^3,p=2*5=10 分析 具体解题思路参照:蓝桥杯 算法提高分解质因数https://blog.youkuaiyun.com/weixin_43042683/ar.

行秋的博客 1123

蓝桥杯 试题 算法训练 强力党逗志芃(C++)

逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能。现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前的技能(有一个最根本的技能不需要前提技能)。学习每个技能要消耗一个技能点,然后可以获得这个技能的威力值。由于逗志芃要陪妹子,所以他希望你教他如何点技能使得威力值最大从而成为强力党。

ghost_him的博客 5320

蓝桥杯 算法训练 P1102(c语言版详细注释)

试题 算法训练 P1102                                ...

xyf0209的博客 763

试题 算法训练 找数2(蓝桥杯C++)

试题 算法训练 找数2(蓝桥杯C++)资源限制题目输入输出格式输入输出数据规模和约定解题(使用C++解题) 资源限制 时间限制:1.0s 内存限制:256.0MB 题目 找数2   【问题描述】在一个小到大的有序序列中(不存在重复数字),查找某个数所在的位置。如果该数不在该数列中,输出其应插入点的位置。 输入 第一行输入N表示有N个数据(N<=1000)   第二行N个小到大非重复的数字(<=10000)   第三行数字X,查找X 输出格式 若X在序列中则输出其相应的位置,若不在序列中输出其

qq_46704948的博客 1103

C语言实现 蓝桥杯 算法训练 相邻数对

试题 算法训练 相邻数对                                &...

xyf0209的博客 681

蓝桥杯 算法训练 多阶乘计算(c语言版详细注释)

试题 算法训练 多阶乘计算                                ...

xyf0209的博客 1511

【蓝桥杯】试题 算法训练 关联矩阵

问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵。 输入格式 第一行两个整数n、m,表示图中结点和边的数目。n<=100,m<=1000。 接下来m行,每行两个整数a、b,表示图中有(a,b)边。 注意图中可能含有重边,但不会有自环。 输出格式 输出该图的关联矩阵,注意请勿改变边和结点的顺序。 样例输入 5 9 1 2 3 1 1 5 2 5 2 3 2 3 3 2 4 3 5 4 样例输出 1 -1 1 0 0 0 0 0 0 -1 0 0 1 1 1 -1 0 0 0 1 0 0

flowral的博客 887
上一篇: 蓝桥杯 试题 算法提高 学霸的迷宫(C++)
下一篇: 算法笔记 差分约束
ghost_him
博客等级 码龄6年 598粉丝 90原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值