码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • LeetCode //C - 52. N-Queens II


    52. N-Queens II

    The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other.

    Given an integer n, return the number of distinct solutions to the n-queens puzzle.
     

    Example 1:

    在这里插入图片描述

    Input: n = 4
    Output: 2
    Explanation: There are two distinct solutions to the 4-queens puzzle as shown.

    Example 2:

    Input: n = 1
    Output: 1

    Constraints:
    • 1 <= n <= 9

    From: LeetCode
    Link: 52. N-Queens II


    Solution:

    Ideas:
    1. Start in the leftmost column.
    2. If all queens are placed, return true.
    3. Try all rows in the current column.
    • If the queen can be placed safely in this row, mark this cell and place the queen.
    • Recur to place the rest of the queens.
    • If placing the queen in the current row and proceeding to place the next queen leads to a solution, return true.
    • If placing the queen doesn’t lead to a solution, then unmark this cell, backtrack, and go to the next row in the current column.
    1. If all rows have been tried and none worked, return false to trigger backtracking.

    To determine if a queen can be placed safely, we need to check three things:

    1. There’s no queen in the same row.
    2. There’s no queen in the same diagonal (both left upper diagonal and right upper diagonal).
    Code:
    bool isSafe(int board[], int row, int col, int n) {
        for (int i = 0; i < col; i++) {
            if (board[i] == row || 
                board[i] - i == row - col || 
                board[i] + i == row + col) {
                return false;
            }
        }
        return true;
    }
    
    int solveNQueensUtil(int n, int col, int board[]) {
        if (col >= n) {
            return 1;
        }
        int count = 0;
        for (int i = 0; i < n; i++) {
            if (isSafe(board, i, col, n)) {
                board[col] = i;
                count += solveNQueensUtil(n, col + 1, board);
            }
        }
        return count;
    }
    
    int totalNQueens(int n) {
        int board[n];
        for (int i = 0; i < n; i++) {
            board[i] = 0;
        }
        return solveNQueensUtil(n, 0, board);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    【Vue配置项】 computed计算属性 | watch侦听属性
    AspNetCore 成长杂记(一):JWT授权鉴权之生成JWT(其一)
    大话AI绘画技术原理与算法优化
    react中useState的值没有改变,而是旧的数值
    【Gradio】Building With Blocks 块中的状 态 + 动态应用程序与渲染装饰器
    智源发布线虫生命模型,超级人脑有望在未来15-30年实现
    视频导出文件太大如何变小?缩小视频这样做
    Lombok依赖
    Linux:zabbix自定义监控项(6)
    【JavaScript】写程序编程基础入门
  • 原文地址:https://blog.csdn.net/navicheung/article/details/133782367
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号