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

【leetcode】51.N皇后

 

class Solution {
public:
    vector<vector<string>> ans; // 存储的最终结果
    vector<string> path; // 存储当前的一种放置方式
    vector<int> col, dg, undg; // 标志 列、斜对角线、正对角线上是否有Q

    void dfs(int u, int n) {
        if (u == n) { // 当深搜到第n行时,说明前n行(0~n-1)都已经有Q了,保存结果并返回
            ans.push_back(path);
            return;
        }
        for (int i = 0; i < n; i++) {
            if (col[i] == 0 && dg[n - 1 - u + i] == 0 && undg[u + i] == 0) {
                path[u][i] = 'Q';
                col[i] = 1;
                dg[n - 1 - u + i] = 1;
                undg[u + i] = 1;
                dfs(u + 1, n);
                path[u][i] = '.';
                col[i] = 0;
                dg[n - 1 - u + i] = 0;
                undg[u + i] = 0;
            }
        }
    }

    vector<vector<string>> solveNQueens(int n) {
        col.resize(n, 0);
        dg.resize(2 * n - 1, 0);
        undg.resize(2 * n - 1, 0);
        path.resize(n, string(n, '.'));
        int u = 0;
        dfs(u, n); // 开始第 0 行
        return ans;
    }
};


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

相关文章:

  • 如何检查CMS建站系统的插件是否安全?
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(60)五火七禽扇灭火 - 接雨水(双指针与动态规划)
  • Kubernetes Network Policy使用场景
  • 微软远程桌面即将下架?Splashtop:更稳、更快、更安全的 RDP 替代方案
  • Django 5实用指南(十四)项目部署与性能优化【完】
  • 调用华为云API实现口罩识别
  • 从以太网 II 到 VLAN 和 Jumbo Frame:数据帧格式解读
  • 前端面试:如何减少项目里面 if-else?
  • 基于Python实现的结合U - Net与Transformer的神经网络用于视网膜血管分割的示例代码
  • 10 道面向 Java 开发者的 Linux 面试题及答案
  • SpringMVC响应页面及不同类型的数据,
  • Redis--补充类型
  • The Rust Programming Language 学习 (六)
  • 多元时间序列预测的范式革命:从数据异质性到基准重构
  • Elasticsearch 向量检索详解
  • 用maven生成springboot多模块项目
  • 【优化】系统性能优化步骤
  • UDP协议栈之整体架构处理
  • AI学习第二天--大模型压缩(量化、剪枝、蒸馏、低秩分解)
  • 上线后出现Bug测试该如何处理