问题描述
  给定一个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皇后相关推荐

  1. 问题 1460: [蓝桥杯]黑白2n皇后问题

    题目描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一 ...

  2. [蓝桥杯][基础训练]2n皇后问题

    给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一条对角线上 ...

  3. 【算法练习】蓝桥杯训练一:区间k大数查询、最大最小公倍数、k好数

    蓝桥杯训练一 一.区间k大数查询(简单)(模拟) 二.最大最小公倍数(中等)(数论) 三.k好数(DP) 一.区间k大数查询(简单)(模拟) 直接模拟就可以,个人觉得题目不严谨,没有说重复元素,也没有 ...

  4. 蓝桥杯 Java n皇后受伤的皇后2n皇后 详解

    1.n皇后问题 在 n*n 的棋盘上放置 n 个皇后,使它们不同行.不同列.不同对角线.问有多少种合法的情况. 输入 4 输出 2 输入 8 输出 92 首先我们把这个问题看成具体的皇后数量去思考,比 ...

  5. 蓝桥杯训练题目若干(东华20考研挑战题1-50)

    文章目录 前言 1 Huffuman树 2 回文数 3 字母图形 4 大阶乘计算 5 回形取数 6 龟兔赛跑预测 7 Sine之舞 8 矩形面积交 9 矩阵乘法 10 分解质因数 11 字符串对比 1 ...

  6. 蓝桥杯训练-礼物盒问题-JAVA

    引用一下习题的原文链接:https://blog.csdn.net/obession/article/details/68951351 大致问题就是: 小y有一个宽度为 100cm,高度为 20cm, ...

  7. ACMNO.39 分解质因数 求出区间[a,b]中所有整数的质因数分解。蓝桥杯训练!

    题目描述 求出区间[a,b]中所有整数的质因数分解. 输入 输入两个整数a,b. 输出 每行输出一个数的分解,形如k=a1*a2*a3...(a1< =a2< =a3...,k也是从小到大 ...

  8. 蓝桥杯训练总结(收官)

    准备了将近3个周,明天就要正式奔赴战场了.都说蓝桥杯比赛很水,但是我以为不管任何比赛,都需要怀有一颗敬畏之心.蓝桥杯比赛算是自己对ACM比赛重新回顾的一次机会,恐怕这也是最后一次机会.虽然这一段时间, ...

  9. 【蓝桥杯】8皇后·改

    参考博客:http://www.cnblogs.com/gaoteng/archive/2012/04/11/2442692.html 题目链接:http://lx.lanqiao.cn/proble ...

最新文章

  1. [转载]tomcat的配置文件server.xml不支持中文注释的解决办法
  2. flutter AppBar
  3. 处理时间_7_60个Mysql日期时间函数汇总
  4. 数据下发非标准用户权限测试
  5. http模拟登陆及发请求
  6. Vue.js 2.6尝鲜
  7. 34、linux shell,常用函数strace
  8. 如何给Arduino项目添加音乐播放功能
  9. 二分类模型评价指标-KS值
  10. 2022码支付个人免签支付源码+监控APP/实测成功
  11. 锚点实现回到顶部的操作
  12. Easyx-----c语言实现图形化打砖块
  13. day 05 random time sys os pickle json re模块 爬取dytt
  14. 8.5.3耳麦拔插事件调用流程分析
  15. 计算机网络配置ospf协议,OSPF路由协议配置(计算机网络实验)
  16. PhotoShop中的自由变换UI实现
  17. uni-app 180查看好友朋友圈完善(一)
  18. 杨校老师课堂之Spring框架面试题【开发工程师面试前必看】
  19. 跨境物流的主要操作流程是怎样的?
  20. SetChatRoomDesc 设置群公告

热门文章

  1. linux下,查找命令的使用
  2. 计算机网络面试知识点
  3. LeetCode 5354. 通知所有员工所需的时间
  4. python删除行_python 删除文件中指定行
  5. 如何进行日志采集设定和时间同步
  6. jsp 点击左边菜单 菜单栏没有停在二级菜单上_Excel – 如何快速导入网页上的表格?...
  7. Poly Network现已支持以太坊至币安智能链及火币生态链一键跨链
  8. SAP License:ABC作业成本法-平行记帐
  9. SAP License:瞎搞!你真的懂什么是ERP、中台和低代码吗?
  10. 通过还款计划表监控还款异常