51. N-Queens (JAVA)
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.

Given an integer n, return all distinct solutions to the n-queens puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where 'Q'and '.' both indicate a queen and an empty space respectively.
Example:
Input: 4
Output: [
[".Q..", // Solution 1
"...Q",
"Q...",
"..Q."], ["..Q.", // Solution 2
"Q...",
"...Q",
".Q.."]
]
Explanation: There exist two distinct solutions to the 4-queens puzzle as shown above.
注意:任意斜线也不能有两个Q
class Solution {
public List<List<String>> solveNQueens(int n) {
List<String> ans = new ArrayList<String>();
//initialize ans
for(int i = 0; i < n; i++){
StringBuilder s = new StringBuilder();
for(int j = 0; j < n; j++){
s.append(".");
}
ans.add(s.toString());
}
dfs(n,0,ans);
return ret;
}
public void dfs(int n, int depth, List<String> ans){
if(depth == n) {
List<String> new_ans = new ArrayList<String>(ans);
ret.add(new_ans);
return;
}
StringBuilder strBuilder = new StringBuilder(ans.get(depth));
for(int i = 0; i < n; i++){
if(check(n, ans, depth, i)) continue; //already have Q in this column
strBuilder.setCharAt(i, 'Q');
ans.set(depth, strBuilder.toString());
dfs(n, depth+1, ans);
strBuilder.setCharAt(i, '.'); //recover
ans.set(depth, strBuilder.toString());
}
}
public Boolean check(int n, List<String> ans, int i, int j){
for(int k = 0; k < i; k++){ //iterate n line
//i-k = j-x => x = j+k-i; i-k = x-j => x = i+j-k
if( ans.get(k).charAt(j) == 'Q'
||(j+k-i >= 0 && ans.get(k).charAt(j+k-i) == 'Q')
|| (i+j-k < n && ans.get(k).charAt(i+j-k) == 'Q'))
return true;
}
return false;
}
private List<List<String>> ret = new ArrayList<>();
}
51. N-Queens (JAVA)的更多相关文章
- CXF错误:Unsupported major.minor version 51.0,java.lang.UnsupportedClassVersionErro
CXF错误:Unsupported major.minor version 51.0 java.lang.UnsupportedClassVersionError >>>>&g ...
- 第51章:Java操作MongoDB-[Mongo-Java-2.x]
①范例:连接数据库 package cn.mldn.demo; import com.mongodb.DB; import com.mongodb.MongoClient; public class ...
- 第51节:Java当中的集合框架Map
简书作者:达叔小生 Java当中的集合框架Map 01 Map提供了三个集合视图: 键集 值集 键-值 映射集 public String getWeek(int num){ if(num<0 ...
- java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51
http://blog.csdn.net/e_wsq/article/details/52100234 一日换了一下MyEclipse,换成2016CI,结果从SVN上下载了一个工程后出现以下错误: ...
- java.lang.UnsupportedClassVersionError: org/openqa/selenium/WebDriver : Unsupported major.minor version 51.0
周一上班,正常打开myeclipse,随便写了一个main方法执行.发现报错了... 问题提示如下: java.lang.UnsupportedClassVersionError: org/openq ...
- Java运行 Unsupported major.minor version 51.0 错误
今天写了简单的Java程序,运行的时候不知道为啥出现这个问题 happy@happy-HP-Compaq-dx7518-MT:~/Study/CrazyJava$ java FieldTest Exc ...
- 记一次jdk升级引起的 Unsupported major.minor version 51.0
之前jdk 一直是1.6,tomcat 是6.x 版本,, 现在引入的新的jar, 出现 Caused by: java.lang.UnsupportedClassVersionError: org/ ...
- myeclipse 无法启动 java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
把myeclipse10 按照目录完整拷贝到了另外一台电脑, 另外的目录 原安装目录 D\:\soft\i\myeclipse10 新安装目录 E\:\soft\myeclipse10 双击启动失败, ...
- 【java.lang.UnsupportedClassVersionError】版本不一致出错
这种错误的全部报错信息: java.lang.UnsupportedClassVersionError: org/apache/lucene/store/Directory : Unsupported ...
- 为何JAVA虚函数(虚方法)会造成父类可以"访问"子类的假象?
首先,来看一个简单的JAVA类,Base. 1 public class Base { 2 String str = "Base string"; 3 protected vo ...
随机推荐
- Android RecyclerView与ListView比较
RecyclerView 概述 RecyclerView 集成自 ViewGroup .RecyclerView是Android-support-V7版本中新增的一个Widgets,官方对于它的介绍是 ...
- ORA-39095: Dump file space has been exhausted
ORA-39095: Dump file space has been exhausted Table of Contents 1. 简述 2. 错误信息 3. 分析 4. 解决 5. 扩展 1 简述 ...
- hibernate映射配置
1. 普通字段类型 2. 主键映射 单列主键映射 多列作为主键映射 主键生成策略,查看api: 5.1.2.2.1. Various additional generators 数据库: Q:一个 ...
- OpenStack 虚拟机启动流程 UML 分析(内含 UML 源码)
目录 文章目录 目录 前言 API 请求 Nova API 阶段 Nova Conductor 阶段 Nova Scheduler 阶段 Nova Compute 阶段(计算节点资源分配部分) Nov ...
- CentOS的SVN服务器搭建与自动部署全过程
CentOS的SVN服务器搭建与自动部署全过程 http://www.jb51.net/article/106218.htm authz-db = authz 引起的 svn 认证失败 http:// ...
- ubuntu下自动获取ip设置
vi /etc/network/interfaces文件为如下内容 wq保存 重启网卡:sudo /etc/init.d/networking restart
- Windows 和 Office 大客户激活方法
激活Windows 10 找到Powershell,然后右键管理员身份运行,依次输入下面的命令,注意将$host切换成为你组织的服务器地址: slmgr.vbs -upk slmgr.vbs -ipk ...
- caoz的梦呓:信息安全常识科普
猫宁!!! 参考链接:https://mp.weixin.qq.com/s/cl4TfOodBGSjUuEU8e0rGA 对方公众号:caoz的梦呓 前天在新加坡IC咖啡做了一场关于信息安全的常识普及 ...
- 云计算共享组件--Memcache缓存系统(4)
一.缓存系统 一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告 ...
- NOIp2015D1T3 斗地主【暴搜】
题目传送门 刚开始读到题目的时候,非常懵逼,非常崩溃,写着写着呢,也有点崩溃,细节有点多. 这个做法呢,只能过掉官方数据,洛谷上好像有加强版,只能得$86$分,就没有管了. 大概说一下思路: 暴力搜索 ...