leeetcode 52. N皇后 II-java实现

题目所属分类

dfs模板题

原题链接

n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。

代码案例:在这里插入图片描述

题解

ans要是放到全局变量时候就是错误的

class Solution {
     static int N = 20;
    static char[][] g = new char[N][N];
    static boolean[] col = new boolean[N];
    static boolean[] dg = new boolean[N];//正斜
    static boolean[] udg = new boolean[N];//反斜
    static int ans  ;
    public int totalNQueens(int n) {
        ans = 0;
         for(int i = 0 ; i < n ; i++){
            for(int j = 0 ; j < n ; j++){
                g[i][j] = '.';            
            }
        }
        dfs( 0 , n );
        return ans ;
    }
    public void dfs(int y , int n ){
        if(y == n ){
            ans++;
            return ;
        }
        for(int x = 0 ; x < n ; x++){
             if(!col[x] && !dg[y-x+n] & !udg[y+x]){
                g[y][x] = 'Q';
                col[x] =  dg[y - x + n] = udg[x + y] = true;               
                dfs(y + 1,n);
                col[x] =  dg[y - x + n] = udg[x + y] = false;   
                g[y][x] = '.';
            }
        }
    }
}
posted @   依嘫  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示