LeetCode51. N皇后

 我博客里有写过很多关于n皇后的教程,直接搜索关键字即可,这里就不多说了

class Solution {
    public List<List<String>> ans = new ArrayList<List<String>>();
    public int path[] = new int[100];//path[i]表示第i行的皇后位置在第path[i]列
    public void dfs(int idx,int n) {//idx = 行
        int p;
        if(idx >= n) {
            List<String> check = new ArrayList<String>();
            for(int i = 0;i < n;i++) {
                String tmp = "";
                for(int j = 0;j < n;j++) {
                    if(j == path[i])
                        tmp += "Q";
                    else
                        tmp += ".";
                }
                check.add(tmp);
            }
            ans.add(check);
            return;
        }
        for(int i = 0;i < n;i++) {//枚举n列
            for(p = 0;p < idx;p++) {//和前k行皇后做比较
                if(path[p] == i || Math.abs(p - idx) == Math.abs(path[p] - i))
                    break;
            }
            if(idx == p) {
                path[p] = i;
                dfs(idx + 1,n);
            }
        }
    }
    public List<List<String>> solveNQueens(int n) {
        ans.clear();
        dfs(0,n);
        return ans;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏令仔很忙

令仔学多线程系列(三)----每天定点执行指定任务

需要注意的一个地方,就是在AirChangeTimerManage 类中,我是每天4点定时执行任务,但是如果我在4点之后进行了重启或者发布,启动之后这个任务就...

831
来自专栏ChaMd5安全团队

第二届红帽杯4Re + 1Pwn的writeup

通过加密函数的分组、及具体算法里的swap,mul,add我操作,看出是idea算法。

1312
来自专栏木子墨的前端日常

easyUI datagrid 清空

最近在做一个管理系统,出于一些需要,经常要将一些datagrid清空。然后easyUI本身并没有自带的方法,然后自己动手丰衣足食吧。

1113
来自专栏张伟博客

显示网站运行时间

文章摘自小峰博客,经常逛网站,细心的话会发现,有些网站底部会显示本站稳定运行XX年XX天,甚至后面还显示XX时、XX秒

6102
来自专栏大内老A

Enterprise Library深入解析与灵活应用(2): 通过SqlDependency实现Cache和Database的同步

对于一个真正的企业级的应用来说,Caching肯定是一个不得不考虑的因素,合理、有效地利用Caching对于增强应用的Performance(减少对基于Pers...

2307
来自专栏重庆的技术分享区

基于python3连接mysql,实现一个银行转账的小功能(shell中执行)

1963
来自专栏史上最简单的Spring Cloud教程

如何在springcloud分布式系统中实现分布式锁?

最近在看分布式锁的资料,看了 Josial L的《Redis in Action》的分布式锁的章节。实现思路是利用springcloud结合redis实现分布式...

4188
来自专栏个人分享

sparksql工程小记

  最近做一个oracle项目迁移工作,跟着spark架构师学着做,进行一些方法的总结。

1943
来自专栏康怀帅的专栏

Apache 编译

本文介绍了手动编译安装 Apache 的具体步骤。 yum 方式安装 $ yum install wget epel-release $ wget https...

4095
来自专栏*坤的Blog

redis主从切换

1903

扫码关注云+社区

领取腾讯云代金券