2n皇后问题

[蓝桥杯][基础训练]2n皇后问题 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。 Input 输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应... 阅读详情

点击打开链接

题目描述

给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。

现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。

问总共有多少种放法?

输入

输入的第一行为一个整数n,表示棋盘的大小。

接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。

n小于等于8。

输出

输出一个整数,表示总共有多少种放法。

样例输入

4
1111
1111
1111

1111

4 1011 1111 1111 1111

样例输出

2
0

来源

蓝桥杯

解析:一个简单的DFS,主要考虑清楚皇后应该放的位置。


#include<stdio.h>
int n,num=0,s[10][10];
char m[10][10];
bool check(int x,int y,int que)
{
	int i,j;
	for(i=x-1;i>=0;i--){
		if(s[i][y]==que) return false;
	}
	for(i=x-1,j=y-1;i>=0&&j>=0;i--,j--){
		if(s[i][j]==que) return false;
	}
	for(i=x-1,j=y+1;i>=0&&j<n;i--,j++){
		if(s[i][j]==que) return false;
	}
	return true;
}
void dfs(int i,int que){
	if(i==n){
		if(que==2) dfs(0,3);
		else num++;    //此处的else一定不能省略,否则会造成重复num++。结果变大一倍以上。
		return ;
	}
	for(int j=0;j<n;j++){
		if(s[i][j]!=1) continue;
		if(check(i,j,que)){
			s[i][j]=que;
			dfs(i+1,que);
			s[i][j]=1;
		} 
		else continue;
	}
	return ;
}

int main()
{
	while(~scanf("%d",&n)){
		num=0;
		for(int i=0;i<n;i++){
			scanf("%s",m[i]);
			for(int j=0;j<n;j++)
			s[i][j]=m[i][j]-'0';
		}
		dfs(0,2);
		printf("%d\n",num);
		
	}
}

2N皇后问题-算法-C++ 2n皇后问题(wustoj-1291)Description给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。如果你之前熟悉n皇后问题的解法,相信对于2n皇后问题也是很好理解的。如果对于n皇后问题还是不太清楚,那请... 阅读详情

相关推荐

蓝桥杯 2n皇后问题 n皇后问题 python

蓝桥杯 2n皇后问题 n皇后问题 python资源限制问题描述输入格式输出格式样例输入样例输出样例输入样例输出实现代码算法分析N皇后问题list[:]与list[]的区别 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。 输入格式 输入的第一行为一个整

qq_48230976的博客 687

棋盘问题

B - 棋盘问题 题目描述:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 输入:输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k...

qq_43335323的博客 261

告别版本冲突!在Ubuntu 20.04上优雅实现ROS Noetic与ROS2 Foxy双环境切换

本文详细介绍了在Ubuntu 20.04系统上实现ROS Noetic(ROS1)与ROS2 Foxy双环境共存与切换的完整方案。通过智能脚本设计和工作空间隔离,解决了版本冲突问题,帮助开发者高效管理不同ROS版本项目。特别适合需要同时开发ROS1和ROS2应用的机器人开发者。

weixin_28452161的博客 411

DFS_棋盘问题

问题 B: DFS_棋盘问题 时间限制: 2 Sec 内存限制: 128 MB 提交: 455 解决: 103 [提交][状态][讨论版] 题目描述 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 输入 输入含有多组测试数据。 每组数据的第一

Warren's Blog 700

手把手教你用ECharts打造炫酷3D饼图(附完整源码)

本文详细介绍了如何使用ECharts创建炫酷的3D饼图,从环境配置到完整源码实现,涵盖参数解析、视觉优化和交互增强技巧。通过实战案例,帮助开发者快速掌握3D数据可视化技术,提升数据展示效果。

weixin_29031057的博客 281

VulnHub--mrrobot

Vulnhub靶场--Mr robot 靶机

记录笔记 1097

八皇后问题 递归+回溯 (n皇后)

时间限制: 1.00s | 内存限制: 128MB会下国际象棋的人都很清楚: 皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8 个皇后放在棋盘(有8×8个方格) 上, 使它们谁也不能被吃掉,这 就是著名的八皇后问题。 . 对于某个满足要求的八个皇后的摆放方法 ,定 义一个皇后串 a 与之对应, 即a=b1b2…b8, 其中 bi 为相应摆法中第 i 行皇后所处的列数。已经知道八皇后问题一共有92 组解(即 92 个不同的皇后串)。 给出一个数b , 要求输出第b 个串。串的比较是这样的: 皇后串

2302_79545206的博客 698

从DWS到设备树:MTK平台LK阶段GPIO初始化的隐秘路径与调试实战

本文深入探讨了MTK平台LK阶段GPIO初始化的完整流程,揭示了从DWS配置到设备树生成的隐秘转换路径。通过分析MT6768等平台的启动框架,提供了针对preloader到LK阶段GPIO初始化异常的实战调试方法与最佳实践,帮助开发者有效解决硬件与软件配置不匹配的常见问题。

h9j8k7l6m5n的博客 1003

【DFS经典例题】2n皇后问题

问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。 输入格式 输入的第一行为一个整数n,表示棋盘的大小。   接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。 输出格式 输出一个整数,表示总共有多少种放法。 样例输入 4 1 1

z135733的博客 1937

运算放大器测试方法-输入失调电压

由于运放输入回路的不对称性,在输入端将产生一定的误差信号,从而限制运放信号灵敏度。通常用输入失调电压(VOS)、输入失调电流(Ios)和输入偏置电流(IB)表示。运放有四个主要特征:输入失调特征、开环特征、共模特征及输出特征。其放大倍数较大,由于外界的影响,即使运放的输入端产生较小的输入信号,经过放大,在输出端也会产生较大的误差。为能精确测量其性能,一般采用辅助运放进行测试。下面着重讲了运放的主要参数及如何精确测量这些参数。文中DUT代表被测运放,A代表辅助运放。

weixin_46135931的博客 1万+

《UDS协议从入门到精通》系列——到底什么是DTC?

到底什么是DTC?看这里,深度图解DTC格式,详述DTC状态位、快照信息和扩展信息!!

车载系统攻城狮 1万+

2n皇后问题 / n皇后问题

题目 点此查看原题 问题描述   给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。 输入格式   输入的第一行为一个整数n,表示棋盘的大小。   接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置...

MineQAQ 6188

OBC_开环扫频波特图拟合操作流程(结合 Simulink)

摘要: 本文详细介绍了基于Simulink的开环扫频波特图测试与拟合流程,适用于电源/控制系统(如LLC/PFC)的小信号分析。主要内容包括:1)前期准备(测试点选择、信号范围设定);2)Simulink建模方法(信号注入、数据记录);3)两种扫频方式(逐频正弦/Chirp扫频)的实现;4)MATLAB数据处理(FFT分析、传递函数拟合);5)线性分析工具使用技巧。重点强调了激励信号幅值控制、稳态数据采集及模型验证方法,并提供完整MATLAB脚本示例。该流程可有效获取系统频域特性,为控制器设计提供可靠依据。

Sumerking的博客 234

蓝桥杯 基础练习 2n皇后问题(从n皇后问题入手)

n皇后问题是一个以国际象棋为背景的问题:在n×n的国际象棋棋盘上放置n个皇后,使得任何一个皇后都无法直接吃掉其他的皇后,即任意两个皇后都不能处于同一条横行、纵行或斜线上。 利用递归和回溯算法轻松解决 递归: 模拟手工摆放:我们逐列放皇后(从小到大逐列摆放),现在先给第一列放皇后,很显然我们会把它放在第一行,接下来,给第二列放皇后,那么第二列的皇后能放在哪些位置?这时候需要一个判断函数来判断第二列的...

old sweet的博客 4447

编织数据的实时脉络——构建基于MySQL的数据编织平台,实现实时数据治理

除了上述基本设置外,我们还可以根据实际应用场景自定义一些特定的监控项目。例如,对于某些高并发读写的表,可能需要特别关注它们的锁等待时间和回滚段使用率;而对于涉及到跨库关联查询的操作,则应当着重检查网络延迟及缓存命中率等因素。-- 获取InnoDB行级锁等待情况-- 统计各表的缓存命中率这段SQL脚本不仅展示了如何查询InnoDB引擎下的锁争用状况,还介绍了计算表级别缓存命中率的方法,有助于深入理解系统的运行状态。

墨夶的博客 1790

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

蓝桥杯 试题 基础练习 2n皇后问题(包含n皇后问题讲解)

思路:因为 #include<bits/stdc++.h> using namespace std; int cnt=0; int r[100]; //r[i]存放第i行所在列数 bool visit[100]; void dfs(int m,int n) { if(m==n) { cnt++; return; } for(int j=0;j<n;j++) { ...

PengWei Yang 2950

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

DFS(深度优先遍历、N皇后问题、2N皇后问题)

尽管在很多情况下回溯法和DFS是紧密相关的,但它们并不总是等价的。回溯法更侧重于问题的求解策略,而DFS更侧重于图的遍历策略。然而,在实际应用中,这两个概念经常交织在一起。

走在努力路上的自己的博客 2516

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android 蓝牙通讯demo

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

2n皇后问题——Java

2n皇后问题 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。 输入 输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一...

A-lex的博客 1864

2n皇后问题 - C++

从八皇后到2n皇后问题 首先让我们先来看一下八皇后问题 题目描述 一个如下的 6×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。 上面的布局可以用序列 2 4 6 1 3 5 来描述,第 i 个数字表示在第 i 行的相应位置有一个棋子,如下: 行号 1 2 3 4 5 6 列号 2 4 6 1 3 5 这只是棋子...

weixin_43846217的博客 1792

N皇后、2N皇后问题总结

N皇后问题 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 你的任务是,对于给定的N,求出有多少种合法的放置方法。 Input 共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。 Output 共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。 Sam...

lanshan1111的博客 904

n皇后问题和2n皇后问题c++

说在前面:最近遇到2n皇后问题,看了很多代码都不是很懂,就先去学习了n皇后问题,n皇后问题弄明白之后,2n皇后问题就很容易了。其中n皇后问题是学习了b站up主<麦克老师讲算法>的视频之后弄明白了。(建议先学习n皇后,再学习2n皇后) 1. n皇后问题 问题简述: 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 输入:n 输出:n*n的棋盘格上,有多种摆法 解析: 其中一个重要的数据结构就是设置一个一维数组a

m0_53833649的博客 313

皇后问题,8皇后、n皇后、2n皇后

8皇后问题 问题描述: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。 该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出: 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。 计算机发明后,有...

Hello World! 2378
上一篇: Fox And Two Dots
下一篇: 素数环
☞十一
博客等级 码龄9年 8粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值