2n皇后问题

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

思路是:先解决白皇后问题,把白皇后在棋盘中放下以后,标记其位置,然后在放黑皇后。

注意  :在白皇后深度搜索之后记得回溯。

import java.util.Scanner;
import java.util.prefs.BackingStoreException;

public class Main {
	public static int[][] a;//棋盘
	public static int[] b;//存放白皇后的位置
	public static int[] c;//存放黑黄后的位置
	public static int n;
	public static int sum = 0 ;
	public static int count = 0 ;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		a = new int[n+1][n+1];
		b = new int[n+1];//白皇后的位置
		c = new int[n+1];//黑黄后的位置
		for(int i = 1 ; i <= n ; i++  ){
			for(int j = 1 ; j <= n ; j++ ){
				a[i][j] = sc.nextInt();
			}
		}
		
		BacktrackWhite(1);
		System.out.println(sum);
		//System.out.println(count);
	}
	public static boolean canPlaceWhite(int row,int col ){//不在同一列,不在同一个斜线上
		
	
	
		for(int i = 1 ; i < row ; i++ ){//i -->行
			if(b[i]==col||Math.abs((i-row))==Math.abs(col-b[i]))
				return false;
		}
		return true;
		
	}
	public static boolean canPlaceBlack(int row , int col){
		for(int i = 1 ; i < row ; i++ ){
			if(c[i] == col||Math.abs(i-row) == Math.abs(c[i]-col)){//黑黄后同样不能放在同一列,同一斜线上
				return false;
			}
		}
		return true;
	}
	public static void  BacktrackWhite(int row){
		if(row > n ){
			BacktrackBlack(1);//白皇后放完后在放置黑黄后
		}else{
			for(int i = 1 ; i <= n ; i++){//i-->列
				if(a[row][i] == 1){
					if(canPlaceWhite(row,i)){
						a[row][i] = 2 ;//白皇后在棋盘放置后设置棋盘数为2
						b[row] = i ;
						BacktrackWhite(row+1);
						a[row][i] = 1;//添加了这一句!!!这一句不能少,试探完后要恢复状态
					}
				}
				
			}
		}
	}
	public static void BacktrackBlack(int row ){
		if(row > n ){
			sum++;
		}else{
			for(int i = 1 ; i <= n ; i++ ){
				if(a[row][i] == 1){
					if(canPlaceBlack(row, i)){
						c[row] = i;
						BacktrackBlack(row+1);
					}
				}
				
			}
		}
	}
}


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

相关推荐

2N皇后问题-算法-C++

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

qq_38063665的博客 7289

一篇文章带你快速搞懂 2n皇后问题

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

枯木何日可逢春 1120

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

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

qq_48230976的博客 687

2n皇后问题(蓝桥杯基础练习C/C++)

2n皇后问题(蓝桥杯基础练习C/C++)

m0_71934846的博客 2762

别再问ARM麒麟怎么装微信了!手把手教你用铠大师搞定Windows软件(飞腾/海思芯片实测)

本文详细介绍了如何在ARM架构的信创电脑(如飞腾/海思芯片)上使用铠大师安装和运行Windows软件,解决微信、Office等常用软件的兼容性问题。通过实测数据对比,铠大师在性能和易用性上显著优于传统方案,为麒麟系统用户提供了一套完整的解决方案。

weixin_28736355的博客 903

如何制作poster以及下载poster模板

目录 前言 一、poster 二、制作软件 1.常用软件 2.专用工具 3.模板下载网址 总结 前言 随着会议的发展,参与国际会议成为研究工作展示的重要途径。poster逐步成为一个方面专家交流的重要工具。本文主要简单介绍一些poster的制作工具。 一、poster Paper, presentation, poster是deadline期间作者的三座大山。poster的内容较小,但内容都是论文中的干货。 二、制作软件 一般来说,制作poster使用PowerPoint.

yiyang14的博客 2万+

蓝桥杯------------2n皇后----(回溯法,Java)

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

嘻嘻的博客 4644

我用 AI Agent 全自动跑 COMSOL 仿真:从建模到后处理,踩了 10+ 个深坑

本文探讨了利用AI通过COMSOL Java API实现AI芯片液冷冷板全流程自动化仿真的实践。针对700W高功耗AI芯片的散热需求,构建了包含4颗Chiplet和微通道冷板的三维液冷模型。通过严格设计的Prompt工程,AI Agent成功完成了从几何建模到结果验证的全过程,最终实现了芯片最高温度54°C的良好散热效果。文章重点分享了10个关键问题的解决经验,包括流体连通性验证、网格顺序控制、离散阶数选择、收敛判据优化等,并建立了包含流场/热场/网格独立性的三重验证体系。实践表明,AI可高效处理重复性工作

sjjsjjsjjsjjsjj的博客 986

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

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

MineQAQ 6188

【芯片验证随心记】1.SystemVerilog中,rand和randc的区别?如何用constraint实现randc?

在SystemVerilog里,randc 的“不重复循环”特性是用一个 周期性排列器(permutation engine) 实现的,而这个引擎在 LRM 里并没有公开。我们只能在 “用户空间” 用 rand + constraint 去模仿它的行为。每次随机化只取 queue.pop_front(),用完再洗。在4次随机化内,y会依次出现0,1,2,3各一次(顺序随机)每次随机化,x可能是0-3中的任意值,可能连续多次相同。每次随机化时,在未使用的值里随机挑一个;第5次随机化时,重新生成新的排列周期。

qq_43172512的博客 342

潜行游戏设计:核心机制与关卡设计解析

潜行游戏作为动作游戏的重要分支,通过视觉遮蔽、声音传播和AI行为树等复杂系统,为玩家提供独特的策略体验。视觉隐蔽系统采用视野锥和光照值的双重判定,声学传播模型模拟距离衰减和材质穿透,而敌人AI行为树则包含巡逻、警戒和团队协作等状态节点。这些技术不仅提升了游戏的真实感和挑战性,还在《合金装备》《刺客信条》等经典作品中得到广泛应用。潜行游戏的关卡设计强调多路径拓扑结构和环境叙事元素,通过沙漏模型和动态难度调节,平衡自由度和开发成本。未来,基于ML的适应性AI和物理模拟的隐蔽系统将成为创新方向。

weixin_42497762的博客 182

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

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

old sweet的博客 4447

用CesiumLab2+nginx零成本构建三维地形服务:从DEM数据到浏览器渲染全流程

本文详细介绍了如何利用CesiumLab2和nginx零成本构建私有三维地形服务的完整流程。从获取DEM数据、使用CesiumLab2进行格式转换,到配置nginx服务器并重点解决跨域问题(Access-Control-Allow-Origin),最终实现在Cesium中流畅加载与渲染自定义地形,为内网或涉密项目提供了高性价比的解决方案。

weixin_29300931的博客 117

蓝桥杯 试题 基础练习 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 2949

黑猫带你学UFS协议第17篇:UFS安全模式详解(Secure Mode)

本文详细介绍了UFS协议中的安全模式,包括Erase, Discard, Purge和Wipe Device操作。Erase用于永久删除数据并确保无法恢复;Discard不保证数据清除;Purge类似于Sanitize,清除内部未映射的物理块数据;Wipe Device则是格式化设备。这些操作涉及逻辑单元、擦除单位、相关寄存器配置等,确保数据安全。" 126036669,12409270,MySQL 8.0 开窗函数详解,"['数据库理论', 'SQL']

黑猫奥利奥的博客 2563

K-Core, K-Shell & K-Crust傻傻分不清楚

K-Core(K-核)就是所有大于等于K的K-Shell的并集;K-Crust(K-皮)就是所有小于等于K的K-shell的并集。

欢迎订阅 -- 小源笔迹 2256

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

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

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

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

2n皇后问题——Java

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

A-lex的博客 1864

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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
上一篇: n后问题
下一篇: 16进制转10进制
jeffery0628
博客等级 码龄11年 39粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值