蓝桥杯训练 2n皇后
问题描述
给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。
输入格式
输入的第一行为一个整数n,表示棋盘的大小。
接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。
输出格式
输出一个整数,表示总共有多少种放法。
样例输入
4
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
样例输出
2
样例输入
4
1 0 1 1
1 1 1 1
1 1 1 1
1 1 1 1
样例输出
0
import java.util.*; public class Test__23 { static int m;static int count = 0;static int H[][];public static void main(String[] args) { Scanner sc = new Scanner(System.in);m = sc.nextInt();H = new int[m][m];for(int i=0; i<H.length; i++){for(int j=0; j<H[i].length; j++){H[i][j] = sc.nextInt();}}Put(0,2);System.out.println(count);}public static void Put(int t,int s) { if(t==m) { if(s==2)Put(0,3); else count++; return ; } for(int i=0;i<m;i++) { if(H[t][i]!=1)continue; if(place(t,i,s))H[t][i]=s; else continue; Put(t+1,s); H[t][i]=1; //回溯法的关键 } return ; } public static boolean place(int t,int i,int s) //检查同一列是否有相同的 { for(int q=t-1;q>=0;q--) { if(H[q][i]==s)return false; } for(int q=t-1,w=i-1;q>=0&&w>=0;q--,w--) //检查主对角线 这行以下的还没放 不检查 { if(H[q][w]==s)return false; } for(int q=t-1,w=i+1;q>=0&&w<=m-1;q--,w++) //检查另一个对角线 { if(H[q][w]==s)return false; } return true; } }
转载于:https://www.cnblogs.com/czy960731/p/6664450.html
蓝桥杯训练 2n皇后相关推荐
- 问题 1460: [蓝桥杯]黑白2n皇后问题
题目描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一 ...
- [蓝桥杯][基础训练]2n皇后问题
给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一条对角线上 ...
- 【算法练习】蓝桥杯训练一:区间k大数查询、最大最小公倍数、k好数
蓝桥杯训练一 一.区间k大数查询(简单)(模拟) 二.最大最小公倍数(中等)(数论) 三.k好数(DP) 一.区间k大数查询(简单)(模拟) 直接模拟就可以,个人觉得题目不严谨,没有说重复元素,也没有 ...
- 蓝桥杯 Java n皇后受伤的皇后2n皇后 详解
1.n皇后问题 在 n*n 的棋盘上放置 n 个皇后,使它们不同行.不同列.不同对角线.问有多少种合法的情况. 输入 4 输出 2 输入 8 输出 92 首先我们把这个问题看成具体的皇后数量去思考,比 ...
- 蓝桥杯训练题目若干(东华20考研挑战题1-50)
文章目录 前言 1 Huffuman树 2 回文数 3 字母图形 4 大阶乘计算 5 回形取数 6 龟兔赛跑预测 7 Sine之舞 8 矩形面积交 9 矩阵乘法 10 分解质因数 11 字符串对比 1 ...
- 蓝桥杯训练-礼物盒问题-JAVA
引用一下习题的原文链接:https://blog.csdn.net/obession/article/details/68951351 大致问题就是: 小y有一个宽度为 100cm,高度为 20cm, ...
- ACMNO.39 分解质因数 求出区间[a,b]中所有整数的质因数分解。蓝桥杯训练!
题目描述 求出区间[a,b]中所有整数的质因数分解. 输入 输入两个整数a,b. 输出 每行输出一个数的分解,形如k=a1*a2*a3...(a1< =a2< =a3...,k也是从小到大 ...
- 蓝桥杯训练总结(收官)
准备了将近3个周,明天就要正式奔赴战场了.都说蓝桥杯比赛很水,但是我以为不管任何比赛,都需要怀有一颗敬畏之心.蓝桥杯比赛算是自己对ACM比赛重新回顾的一次机会,恐怕这也是最后一次机会.虽然这一段时间, ...
- 【蓝桥杯】8皇后·改
参考博客:http://www.cnblogs.com/gaoteng/archive/2012/04/11/2442692.html 题目链接:http://lx.lanqiao.cn/proble ...
最新文章
- [转载]tomcat的配置文件server.xml不支持中文注释的解决办法
- flutter AppBar
- 处理时间_7_60个Mysql日期时间函数汇总
- 数据下发非标准用户权限测试
- http模拟登陆及发请求
- Vue.js 2.6尝鲜
- 34、linux shell,常用函数strace
- 如何给Arduino项目添加音乐播放功能
- 二分类模型评价指标-KS值
- 2022码支付个人免签支付源码+监控APP/实测成功
- 锚点实现回到顶部的操作
- Easyx-----c语言实现图形化打砖块
- day 05 random time sys os pickle json re模块 爬取dytt
- 8.5.3耳麦拔插事件调用流程分析
- 计算机网络配置ospf协议,OSPF路由协议配置(计算机网络实验)
- PhotoShop中的自由变换UI实现
- uni-app 180查看好友朋友圈完善(一)
- 杨校老师课堂之Spring框架面试题【开发工程师面试前必看】
- 跨境物流的主要操作流程是怎样的?
- SetChatRoomDesc 设置群公告
热门文章
- linux下,查找命令的使用
- 计算机网络面试知识点
- LeetCode 5354. 通知所有员工所需的时间
- python删除行_python 删除文件中指定行
- 如何进行日志采集设定和时间同步
- jsp 点击左边菜单 菜单栏没有停在二级菜单上_Excel – 如何快速导入网页上的表格?...
- Poly Network现已支持以太坊至币安智能链及火币生态链一键跨链
- SAP License:ABC作业成本法-平行记帐
- SAP License:瞎搞!你真的懂什么是ERP、中台和低代码吗?
- 通过还款计划表监控还款异常