首页 > 其他分享 >N皇后

N皇后

时间:2024-12-02 10:54:16浏览次数:4  
标签:int dfs diag2 boolean 皇后 diag1 col

N皇后

dfs模板

点击查看代码
class Solution {
    private int ans;
    public int totalNQueens(int n) {
        boolean[] col = new boolean[n];
        boolean[] diag1 = new boolean[n*2 - 1];
        boolean[] diag2 = new boolean[n*2 - 1];
        dfs(0, col, diag1, diag2);
        return ans;
    }

    private void dfs(int r, boolean[] col, boolean[] diag1, boolean[] diag2){
        int n = col.length;
        if(r == n){
            ans++;
            return;
        }
        for(int c = 0; c < n; c++){
            int rc = r-c+n-1;//计算当前行r和列c对应的右斜线diag2的索引。
            if(!col[c] && !diag1[r+c]&&!diag2[rc]){
                col[c] = diag1[r+c] = diag2[rc] =true;
                dfs(r+1,col,diag1,diag2);
                col[c] = diag1[r+c] =diag2[rc]=false;
            }
        }
    }
}

标签:int,dfs,diag2,boolean,皇后,diag1,col
From: https://www.cnblogs.com/ttdb-huu/p/18581262

相关文章

  • 51. N 皇后
    按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n皇后......
  • 【LeetCode:51. N 皇后 + DFS】
    ......
  • 洛谷 P1219 八皇后 DFS
    #include<bits/stdc++.h>usingnamespacestd;inta[14]={0};intb[14]={0};intc[28]={0};intd[28]={0};intn;vector<int>vc1;vector<vector<int>>vc2;set<string>st;voiddfs(intstep){ if(step==n+1) { vc2.push_back(vc1......
  • 代码随想录算法训练营第二十五天|LeetCode491.递增子序列、46.全排列、47.全排列II、3
    前言打卡代码随想录算法训练营第49期第二十五天  ○(^皿^)っHiahiahia…首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。今......
  • Rust求解八皇后问题
    八皇后问题是一个经典的回溯算法问题,目的是在8x8的棋盘上放置8个皇后,使得它们不能相互攻击。也就是说,任意两个皇后不能在同一行、同一列或同一对角线上。这是一个使用Rust解决八皇后问题的完整代码,并附有详细的注解。Rust和Haskell等函数式语言不同,在处理递归或......
  • 探索C#编程:高效解决N皇后问题的回溯算法实现
    在C#中,回溯算法是一种通过探索所有可能的候选解来找出所有解的算法。如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化来撤销上一步或上几步的计算,以获得新的候选解。这个过程一直进行,直到找到所有解或确定无解。回溯算法常用于解决组......
  • 四皇后问题Python实现
    四皇后问题是出自于国际象棋来提出的,众所周知,皇后(queen)在国际象棋中可以控制横竖以及斜线的棋子,那么四皇后的规则是什么呢,咱们废话不多说,直接进入它的规则。1.四皇后问题的规则四皇后问题其实就是把四个皇后放在一个四*四的棋盘上使这些皇后不被互相控制就像这样:那么怎么......
  • C++回溯算法经典例题:四皇后问题
    问题简介:在一个4×4的棋盘上,任意两个皇后都不能处在同一行、同一列任意两个皇后都不能处在同一斜线上(主斜线、反斜线)。题目分析:1.假设第一个皇后在(1,1):    1)在x=3时会卡死            2)在x=4时会卡死        2.假设第一个皇后在(2,1): ......
  • [USACO1.5] 八皇后 Checker Challenge 题解
    [USACO1.5]八皇后CheckerChallenge题目描述一个如下的\(6\times6\)的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列\(2\4\6\1\3\5\)来描述,第\(i\)个数字表示在......
  • D3 深搜(皇后问题)
    八皇后问题题目描述在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方。输入描述(无)输出描述按给定顺序和格式输出所有八皇后问题的解(见样例)。提示:按行进行的搜索样例输出No.11000000000001000000000010000010000......