问题描述
给定一个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

package base27;import java.util.Scanner;public class Main {static int count = 0;static int n;static int[] w_place;static int[] b_place;static int[][] a;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();a = new int[n][n];w_place = new int[n];b_place = new int[n];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {a[i][j] = in.nextInt();}}backTrace(0);//双回溯System.out.println(count);}private static void backTrace(int i) {//m为从上到下递增的行数 w为左到右的列if (i > n - 1) {count++;return;}for (int w = 0; w < n; w++) {if (check_w(i, w)) {w_place[i] = w;a[i][w] = 0;for (int b = 0; b < n; b++) {if (check_b(i, b)) {b_place[i] = b;a[i][b] = 0;backTrace(i + 1);a[i][b] = 1;}}a[i][w] = 1;}}}private static boolean check_w(int i, int j) {if (a[i][j] == 0)return false;for (int k = 0; k < i; k++) {if (w_place[k] == j || Math.abs(i - k) == Math.abs(w_place[k] - j))return false;}return true;}private static boolean check_b(int i, int j) {if (a[i][j] == 0)return false;for (int k = 0; k < i; k++) {if (b_place[k] == j || Math.abs(i - k) == Math.abs(b_place[k] - j))return false;}return true;}
}

[Java] 蓝桥杯BASIC-27 基础练习 2n皇后问题相关推荐

  1. java蓝桥杯加法变乘法_蓝桥杯-加法变乘法-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  2. java蓝桥杯练习 矩阵加法

    java蓝桥杯练习 矩阵加法 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定两个N×M的矩阵,计算其和.其中: N和M大于等于1且小于等于100,矩阵元素的绝对值不超过1000 ...

  3. 标题 日期问题java蓝桥杯,日期类的使用(java)-蓝桥杯

    蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...

  4. java蓝桥杯练习 学做菜

    java蓝桥杯练习 学做菜 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 涛涛立志要做新好青年,他最近在学做菜.由于技术还很生疏,他只会用鸡蛋,西红柿,鸡丁,辣酱这四种原料来做菜, ...

  5. java蓝桥杯练习 蜜蜂飞舞

    java蓝桥杯练习 蜜蜂飞舞 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 "两只小蜜蜂呀,飞在花丛中呀--" 话说这天天上飞舞着两只蜜蜂,它们在跳一种奇怪的舞 ...

  6. Java 蓝桥杯 我们的征途是星辰大海

    Java 蓝桥杯 我们的征途是星辰大海 最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成. 共有四种方格: '.' 代表空地,curiosity可以穿过它 '#' 代 ...

  7. JAVA 蓝桥杯 算法提高 阮小二买彩票

    JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...

  8. java蓝桥杯练习 拉马车

    java蓝桥杯练习 拉马车 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. ...

  9. java蓝桥杯练习 幸运数

    java蓝桥杯练习 幸运数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成. 首先从1开始写出 ...

  10. java蓝桥杯练习 Hankson的趣味题

    java蓝桥杯练习 Hankson的趣味题 资源限制 时间限制:1.0s 内存限制:64.0MB 问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hank ...

最新文章

  1. Caffe 学习笔记1
  2. MVC、MVP、MVVM分别是什么?有什么区别?
  3. 神圣的傻瓜,善良的杰克·凯鲁亚克:纪念《在路上》50年
  4. Map.putAll方法——追加另一个Map对象到当前Map集合
  5. 小白如何写Python算法-计算模型稳定性评估指标PSI
  6. list mybatis批量保存_如何实现mybatis批量将list数据插入到数据库
  7. 合并多个 SQL 文件,并用 Navicat 执行
  8. 图片Exif信息解析(Java实现)
  9. 杀毒软件会从哪些方面对计算机进行保护作用(360杀毒软件)
  10. 虚拟机内下载速度慢解决方法汇总
  11. PGSQL创建管理员账号
  12. vue修改浏览器的标题和图标
  13. C10k-problem
  14. 矩阵特征值和特征向量求解——特征值分解
  15. TXT迷你小说阅读器
  16. noip day2 聪明的质检员
  17. 什么?微信居然有个更好用的 64 位版本!
  18. Flex 之旅(一)
  19. matlab傅里叶工具箱,Matlab傅里叶算法及数字滤波
  20. c语言选民投票系统,投票系统实现

热门文章

  1. 借助 OpenGL* ES 2.0 实现动态分辨率渲染
  2. 用jdbc连接hive server需要用到的 几个jar包
  3. Android单元测试(七):Robolectric,在JVM上调用安卓的类
  4. Mac上以太坊Geth环境安装
  5. 专访世纪互联:公共云才是真正云计算
  6. 数据存储之偏好设置NSUserDefaults
  7. git fatal: index file smaller than expected
  8. unity3d 中加入�视频
  9. R 绘制风洞实验数据曲线
  10. 通过一个IT管理服务提供商攻陷190个澳大利亚组织机构的邮件供应链