843. n-皇后问题(dfs+输出各种情况)
n-皇后问题是指将 n 个皇后放在 n∗n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。

现在给定整数n,请你输出所有的满足条件的棋子摆法。
输入格式
共一行,包含整数n。
输出格式
每个解决方案占n行,每行输出一个长度为n的字符串,用来表示完整的棋盘状态。
其中”.”表示某一个位置的方格状态为空,”Q”表示某一个位置的方格上摆着皇后。
每个方案输出完成后,输出一个空行。
数据范围
1≤n≤91≤n≤9
输入样例:
4
输出样例:
.Q..
...Q
Q...
..Q.
..Q.
Q...
...Q
.Q..
代码:
import java.util.Scanner;
public class Main{
static int n;
static final int N=10;
static int a[]=new int[N];
static char map[][]=new char[N][N];
static boolean check(int t){
for(int i=0;i<t;i++)
if(a[i]==a[t] || Math.abs(i-t)==Math.abs(a[i]-a[t]))
return false;
return true;
}
static void dfs(int t){
if(t==n){
//因为开的字符数组大小为N,实际输出可不是N,所以两重循环输出
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++)
System.out.print(map[i][j]);
System.out.println();
}
System.out.println();
}
for(int i=0;i<n;i++){
a[t]=i;
if(check(t)) {
map[t][i]='Q';
dfs(t+1);
map[t][i]='.';
}
}
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
n=scan.nextInt();
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
map[i][j]='.';
dfs(0);
}
}
843. n-皇后问题(dfs+输出各种情况)的更多相关文章
- n皇后问题--DFS输出棋盘
N皇后问题 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对 ...
- DFS输出全排列
前言 输入n(1 <= n <= 20),按字典序输出所有1~n的排列.如果排列数量太多,则只需要输出前100个 输入样例 3 输出样例 1 2 3 1 3 2 2 1 3 2 3 1 3 ...
- HDU 1160(两个值的LIS,需dfs输出路径)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1160 FatMouse's Speed Time Limit: 2000/1000 MS (Java/ ...
- 蓝桥杯 算法提高 8皇后·改 -- DFS 回溯
算法提高 8皇后·改 时间限制:1.0s 内存限制:256.0MB 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8 ...
- HDOJ2553-N皇后问题(DFS)
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- HDU2553 N皇后问题——DFS
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu2553N皇后问题(dfs,八皇后)
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- Aizu - ALDS1_13_A-8 Queens Problem-八皇后的路径输出
The goal of Queens Problem is to put eight queens on a chess-board such that none of them threatens ...
- [HDU2553]N皇后问题(DFS)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2553 题意 n<=10,输出N皇后问题的方法数. 题解 可以使用各种方法.这里使用DFS. 使用 ...
随机推荐
- python随用随学20200220-异步IO
啥是异步IO 众所周知,CPU速度太快,磁盘,网络等IO跟不上. 而程序一旦遇到IO的时候,就需要等IO完成才能进行才能进行下一步的操作. 严重拖累了程序速度. 因为一个IO操作就阻塞了当前线程,导致 ...
- js能力测评——移除数组中的元素
移除数组中的元素 题目描述 : 移除数组 arr 中的所有值与 item 相等的元素.不要直接修改数组 arr,结果返回新的数组 示例1 输入 [1, 2, 3, 4, 2], 2 输出 [1, 3, ...
- 分形的奥秘!分形着色器!shader 编程入门实战 ! Cocos Creator!
极致的数学之美! 什么是分形? "一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状" 简单来说,分形(fractal)就像这个doge表情包 ...
- 从零构建Flink SQL计算平台 - 1平台搭建
一.理想与现实 Apache Flink 是一个分布式流批一体化的开源平台.Flink 的核心是一个提供数据分发.通信以及自动容错的流计算引擎.Flink 在流计算之上构建批处理,并且原生的支持迭代计 ...
- MySQL必知必会--汇 总 数 据
聚集函数 我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提 供了专门的函数.使用这些函数,MySQL查询可用于检索数据,以便分 析和报表生成.这种类型的检索例子有以下几种. 确定表中行数 ...
- redis集群redis-cluster搭建
redis集群搭建--参考微信公众号(诗情画意程序员):https://mp.weixin.qq.com/s/s5eJE801TInHgb8bzCapJQ 这是来自redis官网的一段介绍,大概意思就 ...
- 解决在jsp页面中使用jstl无法遍历request域中list集合的问题
解决在jsp页面中使用jstl无法遍历request域中list集合的问题 1. 前言 最近在写一个很简单的Javaweb项目,里面需要将request域中的list集合加载到jsp页面,我使用e ...
- RMAN中MAXSETSIZE和MAXPIECESIZE的用法
MAXSETSIZE跟MAXPIECESIZE用法 区别:maxpiecesize设置的是备份完成后的备份片大小,对备份整体的大小没有影响,比如一个G的备份完成文件,maxpiecesize设置为10 ...
- java基础之----23种设计模式(单例模式)
概述 提到单例模式,我们并不陌生,而且面试中也常常会问单例模式相关的问题,接下来就谈谈单例模式,这篇文章会回答如下几个问题: 什么是单例模式? 单例模式有几种实现方式,以及各种实现方式的优劣? 单例模 ...
- MS SQL为字段添加说明
以ms sql server 14 v17为例. 如下表dbo.Q中有一个字段'' 首先在数据库的系统存储过程列表中: 找到sys.sp_addextendedproperty,使用这个为字段添加一 ...