题目描述

有一个n×n 的国际象棋棋盘(n 行 n 列的方格图),请在棋盘中摆放 n 个受伤的国际象棋皇后,要求:

  1. 任何两个皇后不在同一行。
  2. 任何两个皇后不在同一列。
  3. 如果两个皇后在同一条 45 度角的斜线上,这两个皇后之间行号的差值至少为 3 。

请问一共有多少种摆放方案。

输入描述

输入的第一行包含一个整数 n。
其中,1≤n≤10。

输出描述

输出一个整数,表示答案。

输入输出样例

示例 1
输入

4

输出

2

运行限制

最大运行时间:1s
最大运行内存: 128M


解题思路

在n阶矩阵中放入n个皇后,那么每列或每行肯定会有一个,令第一颗棋子在第一行,只需要遍历完第一颗棋子的可能情况即可得到结果。
利用深度优先搜索,dfs(k)表示搜索到深度为k的情况

代码部分

import java.util.*;
import java.io.*;public class Main {static int g[][] = new int[11][11];//棋盘static int ans = 0;//记录答案static int n;//记录要放多少棋子static int cnt=  0;//记录放置棋子个数public static void main(String[] args) throws  IOException {//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));Scanner scan = new Scanner(System.in);n = scan.nextInt();for(int i = 1;i<=n;i++) {for(int j = 1;j<=n;j++) {//初始化Arrays.fill(g[j], 0);}g[1][i] = 1;cnt=1;dfs(2);}System.out.println(ans);scan.close();//br.close();}static void dfs(int k) {if(k==n+1) {if(cnt==n) {//遍历到最后一层并且放下的棋子数满足要求即为一种结果ans++;}return ;}for(int i = 1;i<=n;i++) {if(isOk(k,i)) {//如果可以就放置g[k][i] = 1;cnt++;dfs(k+1);//回溯g[k][i] = 0;cnt--;}}return;}static boolean isOk(int x,int y) {//用来判断此处能否放棋子for(int i = 1;i<=n;i++) {if(g[x][i]==1) return false;}for(int i = 1;i<=n;i++) {if(g[i][y]==1) return false;}if(g[x][y]==1) return false;for(int i = 1;i<=n;i++) {int tx = x-i;int ty = y-i;if(tx>0&&ty>0) {if(g[tx][ty]==1&&Math.abs(tx-x)<3) return false;}else {break;}}for(int i = 1;i<=n;i++) {int tx = x-i;int ty = y+i;if(tx>0&&ty<=n) {if(g[tx][ty]==1&&Math.abs(tx-x)<3) return false;}else {break;}}for(int i = 1;i<=n;i++) {int tx = x+i;int ty = y-i;if(tx<=n&&ty>0) {if(g[tx][ty]==1&&Math.abs(tx-x)<3) return false;}else {break;}}for(int i = 1;i<=n;i++) {int tx = x+i;int ty = y+i;if(tx<=n&&ty<=n) {if(g[tx][ty]==1&&Math.abs(tx-x)<3) return false;}else {break;}}return true;}}

【2022刷题】受伤的皇后相关推荐

  1. 【2022刷题】心理阴影面积

    这是一幅心理阴影面积图.我们都以为自己可以匀速前进(图中蓝色直线),而拖延症晚期的我们往往执行的是最后时刻的疯狂赶工(图中的红色折线).由红.蓝线围出的面积,就是我们在做作业时的心理阴影面积. 现给出 ...

  2. 【2022刷题】天梯赛座位分配

    引言 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 ...

  3. 2022/4/3刷题

    2022/4/3刷题 Pascal's triangle(Turn 45 degrees counterclockwise) RESULT Output:Three numbers from big ...

  4. 力扣算法刷题Day30|回溯:重新安排行程 N皇后 解数独

    力扣题目:#332.重新安排行程 刷题时长:参考题解 解题方法:回溯法 + 哈希表 复杂度分析 时间 空间 问题总结 无思路 本题收获 难点 避免死循环:去过的to机场及时删除 记录映射关系:哈希表, ...

  5. Python 刷题常用语法与数据结构汇总-2022.01.30

    [笔试]python刷题笔记(基础)! https://blog.csdn.net/a_123456598/article/details/105420802 python语法刷题 https://b ...

  6. C语言二级题库(刷题软件+60套真题+填空题+大题)2022年9月份新题第三套

    文章只能发选择题,刷大题去刷题软件效果会更好 刷题软件 gongzhonghao:露露IT 选择题 1.下面选项中不是关系数据库基本特征的是_______. A. 不同的列应有不同的列名 B. 不同的 ...

  7. 第十四届蓝桥杯三月真题刷题训练——第 22 天

    目录 第 1 题:受伤的皇后_dfs 题目描述 输入描述 输出描述 输入输出样例 运行限制 代码: 思路: 第 2 题:完全平方数 问题描述 输入格式 输出格式 样例输入 1 样例输出 1 样例输入 ...

  8. 【Leetcode】刷题题单记录

    程序=算法+数据结构,不管干哪一行,只要涉及到编程算法始终是最重要的!!! 算法基础差,变做题巩固!!! LeetCode刷题,搞起来! 由于我只会C++和Python, 所以题解只有C++ 和 Py ...

  9. 洛谷、牛客网、AcWing 刷题(python版)

    牛客网python专项练习整理(一) https://blog.csdn.net/weixin_41913008/article/details/87203468 牛客网剑指offer--python ...

  10. C#LeetCode刷题-程序员面试金典

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-程序员面试金典 | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode程序员面试金典 ...

最新文章

  1. WCF系列(一) -- 完全不使用配置文件构建和使用WCF服务
  2. 【特征工程】不容错过的 5 种特征选择的方法!
  3. rxjs pipe和map组合的一个实际例子的单步调试
  4. SSD( Single Shot MultiBox Detector)关键源码解析
  5. PWA将带来新一轮大前端技术洗牌?
  6. JavaScript 总结几个提高性能知识点(转)
  7. 33 SD配置-销售凭证设置-定义销售凭证的号码范围
  8. Spring Bean的生命周期例子
  9. matlab ssb,MatlabSSB信号的仿真分析.doc
  10. 百度启动“2021好运中国年” 22亿福利项目
  11. HSImageSidebarView
  12. Android通知频道,通知点
  13. 中国Linux源镜像站大全
  14. securityPolicy与安全策略等级配置
  15. Monkey命令相关总结
  16. 数据结构面试、数据结构考研复试——常见问题以及回答
  17. vue3 ts 手动封装message消息组件
  18. java 留言回复_Java实现评论回复功能的完整步骤
  19. 赛事相关 | 你好,微信大数据挑战赛,我是TI-ONE
  20. excel matlab日期,Excel日期格式在matlab中的转换

热门文章

  1. linux ps命令什么意思,linux之ps命令详解
  2. 15.8 Math数学计算
  3. 网页中常说的‘焦点’是什么意思
  4. java 找不到符号
  5. 2021年最完善的谷歌SEO关键词调研技巧
  6. 明御:APT攻击预警平台
  7. WiFi无线网络的几种认证与加密方式
  8. 华为鸿蒙主题设计,EMUI 11 UX设计一探究竟:这就是鸿蒙OS的提前预演
  9. 服务器c盘临时文件在哪里,excel在c盘哪个文件夹|excel临时文件位置
  10. Android常用Qualifiers(限定符)