当前位置: 首页 > article >正文

LeetCode51 N 皇后

前言

题目: 51. N 皇后
文档: 代码随想录——N 皇后
编程语言: C++
解题状态: 投降投降…

思路

回溯法,思路其实不算难,就是判断棋子的位置是否合法有难度。

代码

class Solution {
private:
    vector<vector<string>> res;
    void backtracking(int n, int row, vector<string>& chessboard) {
        if (row == n) {
            res.push_back(chessboard);
            return;
        }

        for (int col = 0; col < n; col++) {
            if (isValid(row, col, chessboard, n)) {
                chessboard[row][col] = 'Q';
                backtracking(n, row + 1, chessboard);
                chessboard[row][col] = '.';
            }
        }
    }

    bool isValid(int row, int col, vector<string>& chessboard, int n) {
        for (int i = 0; i < row; i++) {
            if (chessboard[i][col] == 'Q') {
                return false;
            }
        }

        for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {
            if (chessboard[i][j] == 'Q') {
                return false;
            }
        }

        for (int i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++) {
            if (chessboard[i][j] == 'Q') {
                return false;
            }
        }

        return true;
    }
public:
    vector<vector<string>> solveNQueens(int n) {
        res.clear();
        vector<string> chessboard(n, string(n, '.'));
        backtracking(n, 0, chessboard);
        return res;
    }
};
  • 时间复杂度: O ( n ! ) O(n!) O(n!)
  • 空间复杂度: O ( n ) O(n) O(n)

http://www.kler.cn/a/290037.html

相关文章:

  • adb shell常用命令
  • 什么是RAG? LangChain的RAG实践!
  • NCC前端调用查询弹框
  • windows C#-LINQ概述
  • 解决C盘空间不足的三种方案
  • 35.3K+ Star!PhotoPrism:一款基于AI的开源照片管理工具
  • github上传代码
  • 河南省第三届职业技能大赛 网络安全(世赛选拔)项目样题
  • 【C++模板初阶】
  • 新换了电脑,电脑里常用的6款软件,下载回来继续用
  • Driver.js——实现页面引导
  • OpenFeign深入学习笔记
  • MySQL之DQL简单查询
  • 光纤接口简介
  • 三根K线形态介绍
  • OceanBase V4.2解析:如何用迭代器 Generator快速生成任意数据
  • 【复旦微FM33 MCU 外设开发指南】外设篇3——SPI
  • day02 1.c++对c的扩充
  • 学习关系型数据库:在MAC下编译安装firebird
  • 【iOS】——分类拓展关联对象
  • iOS面试:BAD_ACCESS在什么情况下出现?
  • SQL 语言简明入门:从历史到实践
  • BaseCTF之web(week2)
  • springboot使用swagger生成接口文档
  • 华为 HCIP-Datacom H12-821 题库 (6)
  • Leetcode236经典题目二叉树的最近公共祖先