蓝桥杯 基础训练 BASIC-27 2n皇后问题
接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 0 1 1
1 1 1 1
1 1 1 1
1 1 1 1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class Main {
private static int n; // n*n棋盘,n个黑皇后和n个白皇后
private static int[][] palace; //棋盘
private static int[] column_num; //记录每个皇后放的列号
private static int count; //统计方案数
private static boolean flag = false; public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
palace = new int[n][n];
column_num = new int[n]; for(int i = 0; i < n; i++){
String[] str = br.readLine().split(" ");
for(int j = 0; j < n; j++){
palace[i][j] = Integer.parseInt(str[j]);
}
} place(0); System.out.println(count);
}
// 放皇后
private static void place(int quee) {
if(quee == n && !flag){ //如果n个黑皇后已经放置好,将标记置为true,然后放置n个白皇后
flag = true;
place(0);
flag = false;
}else if(quee == n && flag){ //如果黑白皇后都已经放置好,则方案数加1
count++;
}else{
for(int column = 0; column < n; column++){ //遍历列
if(palace[quee][column] == 1){ //如果发现此位置为1,即可以放皇后
int temp = column_num[quee]; //先将之前放置的列号记录下来,如果此时的列位置不能放皇后,则将之前的列号返回
column_num[quee] = column;
if(judge(quee)){ //判断放置的位置与 放置好的皇后是否右冲突
palace[quee][column] = -1; //将此时的棋盘位置置为-1
place(quee+1); //然后去放下一个皇后
palace[quee][column] = 1; //若下一个皇后没有放置好,回溯后将之前的-1变为1,即此时的位置允许放皇后
}
column_num[quee] = temp; //返回列号
}
}
}
} //判断放置的位置与放置好的皇后是否有冲突
private static boolean judge(int quee) {
for(int ready = 0; ready < quee; ready++){ //用之前的皇后去检测
if(column_num[ready] == column_num[quee] || //是否在同一列
quee + column_num[quee] == ready + column_num[ready] || //是否在左对角线
quee - column_num[quee] == ready - column_num[ready]){ //是否在右对角线
return false;
}
}
return true;
}
}
蓝桥杯 基础训练 BASIC-27 2n皇后问题的更多相关文章
- Java实现 蓝桥杯VIP 基础练习 2n皇后问题
基础练习 2n皇后问题 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一 ...
- 蓝桥杯试题 基础练习 2n皇后问题以及n皇后问题
在学习2n皇后之前,我们应该认识一下n皇后问题: 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于 ...
- 蓝桥杯 基础训练 2n皇后
数月前做的2N皇后基本看书敲代码的,然后发现当时的代码不对,正好做到算法提高的8皇后·改,顺便把以前的代码顺带改了下,题目如下: 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋 ...
- [蓝桥杯][基础训练]2n皇后问题
Description 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行 ...
- [蓝桥杯][基础训练]Huffuman树
Description Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. , p1, …, pn-1},用这列数构造Huffman树的过程如下:1. 找到{pi} ...
- java 蓝桥杯基础训练 回文数
public class _8回文数 { //两种方法都可以 // public static void main(String[] args) { // String zheng ="&q ...
- [蓝桥杯][基础训练]Sine之舞
Description 最近FJ为它的奶牛开设了数学分析课,FJ知道,若要学好这门课,必须有一个好的三角函数基本功. 所以他为奶牛们做了一个“Sine之舞”的游戏,寓教于乐,提高奶牛的计算能力. 不妨 ...
- [蓝桥杯][基础训练]FJ的字符串
Description FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 = “ABACABADABACABA” … … 你能找出其中的规律 ...
- 蓝桥杯练习系统—基础练习 2n皇后问题
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后, 使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行. 同一列或 ...
随机推荐
- Deep Learning概述
1.深度学习发展简史 2.三步实现深度学习 2.1Neural Network 神经网络由模仿脑部神经系统发展而来,一个节点称为一个“Neuron”,包括连接在节点上面的weights和biases. ...
- ScreenOS地址转换
目录 1. NAT-src 1.1 来自DIP池(启用PAT)的NAT-src 1.2 来自DIP池(禁用PAT)的NAT-src 1.3 来自DIP池(带有地址变换)的NAT-src 1.4 来自出 ...
- php+JS进度条
<?phpini_set('max_execution_time','0');//设置本页面加载时间无限制 echo "<div style='border: 1px solid ...
- Codeforces Round #390 (Div. 2) A B C D
这是一场比较难的div2 ... 比赛的时候只出了AB A很有意思 给出n个数 要求随意的把相邻的数合并成任意多数 最后没有为0的数 输出合并区间个数与区间 可以想到0可以合到任何数上并不改变该数的性 ...
- How to use QToolBar and QToolButton in Qt
http://developer.nokia.com/Community/Wiki/How_to_use_QToolBar_and_QToolButton_in_Qt How to use QTool ...
- linux vim vi编辑时撤销输入操作
linux vim vi编辑时撤销输入操作 1,esc退出输入状态 2,u 撤销上次操作 3,ctrl+r 恢复撤销
- 导入别人struts2项目可能要做的改变
然后: 接着 再接着 最后
- weinre远程调试
一: 关于weinre weinre是一款依赖于nodejs的远程调试工具,现阶段一般用到手机app上调试非常的强大 二: weinre的安装 1) 安装 nodejs以及npm 2) 安装wein ...
- 搜索4--noi6264:走出迷宫
搜索4--noi6264:走出迷宫 一.心得 可以去看看别人的代码,吸收精华 二.题目 6264:走出迷宫 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 当 ...
- 集成 ActiveMQ 到应用服务器
本章知识点 集成 ActiveMQ 和 Apache Tomcat 集成 ActiveMQ 和 Jetty 集成 ActiveMQ 和 Apache Geronimo 集成 ActiveMQ 和 JB ...