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

LeetCode 面试题 08.12. 八皇后

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

  设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。

  注意:本题相对原题做了扩展

示例:

输入: 4
输出: [[“.Q…”,“…Q”,“Q…”,“…Q.”],[“…Q.”,“Q…”,“…Q”,“.Q…”]]
解释: 4 皇后问题存在如下两个不同的解法。
[
[“.Q…”, // 解法 1
“…Q”,
“Q…”,
“…Q.”],
[“…Q.”, // 解法 2
“Q…”,
“…Q”,
“.Q…”]
]

  点击此处跳转题目。

二、C# 题解

  经典的 n 皇后题目,使用递归求解如下:

public class Solution {public IList<IList<string>> SolveNQueens(int n) {IList<IList<string>> ans = new List<IList<string>>();Partition(ans, new int[n], 0, 0, n);return ans;}// 递归方法,pos[i] 记录第 i 行皇后的位置public void Partition(IList<IList<string>> ans, int[] pos, int i, int j, int n) {if (i == n) {// 递归出口ans.Add(Generate(pos));return;}if (j == n) return;if (Check(pos, i, j, n)) {// 如果可以放下皇后pos[i] = j;                       // 放皇后Partition(ans, pos, i + 1, 0, n); // 继续下一行}Partition(ans, pos, i, j + 1, n); // 继续该行下一个进行判断}// 检查当前位置 i,j 是否能放皇后public bool Check(int[] pos, int i, int j, int n) {for (int k = 0; k < i; k++) {int difX = j - pos[k], difY = i - k;             // x 差值和 y 差值if (difX == 0) return false;                     // 竖向判断if (difX == difY || difX == -difY) return false; // 横向判断}return true;}// 依据下标位置生成字符串结果public IList<string> Generate(int[] pos) {IList<string> ans = new List<string>();StringBuilder sb  = new StringBuilder(new string('.', pos.Length));for (int i = 0; i < pos.Length; i++) {sb[pos[i]] = 'Q';ans.Add(sb.ToString());sb[pos[i]] = '.';}return ans;}
}
  • 时间:116 ms,击败 100.00% 使用 C# 的用户
  • 内存:46.79 MB,击败 95.65% 使用 C# 的用户

相关文章:

LeetCode 面试题 08.12. 八皇后

文章目录 一、题目二、C# 题解 一、题目 设计一种算法&#xff0c;打印 N 皇后在 N N 棋盘上的各种摆法&#xff0c;其中每个皇后都不同行、不同列&#xff0c;也不在对角线上。这里的“对角线”指的是所有的对角线&#xff0c;不只是平分整个棋盘的那两条对角线。 注意&#…...

Excel 的下拉列表

可以将 Sheet6 隐藏&#xff0c;就更好地隐藏了来源。...

基于Effect的组件设计 | 京东云技术团队

Effect的概念起源 从输入输出的角度理解Effect https://link.excalidraw.com/p/readonly/KXAy7d2DlnkM8X1yps6L 编程中的Effect起源于函数式编程中纯函数的概念 纯函数是指在相同的输入下&#xff0c;总是产生相同的输出&#xff0c;并且没有任何副作用(side effect)的函数。…...

541. 反转字符串 II

541. 反转字符串 II class Solution { public:void Reverse(string& s, int start, int end){end--;while (start < end){swap(s[start], s[end]);start;end--;}}string reverseStr(string s, int k){int len s.size();for (int i 0; i < len; i 2 * k){if (i …...

基本分段存储管理方式(分段,段表,地址转换以及与分页管理对比)

1.分段 1.进程的地址空间: 按照程序自身的逻辑关系划分为若干个段&#xff0c;每个段都有一个段名 &#xff08;在低级语言中&#xff0c;程序员使用段名来编程&#xff09;&#xff0c;每段从0开始编址. 2.内存分配规则: 以段为单位进行分配&#xff0c;每个段在内存中占据…...

哪个牌子的洗地机好用?2023洗地机推荐

洗地机作为一款高效的清洁家电能轻松的搞定各种干湿垃圾&#xff0c;满足日常生活中的各种地面清洁需求&#xff0c;越来越受大众的青睐&#xff0c;那么我们如何快速的选择一款适合自己无线洗地机呢?一起来看看! 做推荐之前&#xff0c;先给大家科普选购洗地机的时候应该关注…...

根据脑图谱获取感兴趣区域的mask

根据脑图谱获取感兴趣区域的mask 1&#xff0c;引入1.1 ASPECT-Atlas 2&#xff0c;获取脑图谱感兴趣区域mask参考&#xff1a; 1&#xff0c;引入 脑影像分析中&#xff0c;我们常常会针对性的对某些感兴趣区域进行分析&#xff0c;而对它们进行分析的前提是获取该区域的mask…...

Android Framework通信:Handler

文章目录 前言一、Handler源码分析1、创建Handler2、发送消息3、取消息4、消息处理5、线程切换的方法&#xff08;Handler异步消息处理机制流程&#xff09;handler.sendMessage()handler.post()View.post()Activity中的runOnUiThread() 二、Handler高频面试题1、为什么要有Han…...

Redis的安装和配置

一、Redis的安装 使用命令将redis安装到linux服务器 yum -y install redis配置redis配置文件 redis的配置文件默认路径为/etc/redis.conf&#xff0c;对配置文件进行修改。 &#xff08;1&#xff09;注释掉bind 127.0.0.1&#xff1b; bind配置项设置的是redis允许的ip地址访问…...

Java武侠文字游戏

import java.util.Random;public class Role {//姓名private String name;//血量private int blood;//性别private char gender;//长相(随机)private String face;String[] boyfaces {"风流俊雅", "气宇轩昂", "相貌英俊", "五官端正"…...

数字化时代下,汽车行业如何突破现有营销困境?

之前三年的“口罩”时期&#xff0c;给全球和中国汽车市场带来不小影响&#xff0c;汽车销售市场整体下滑&#xff0c;传统营销模式很难适应现阶段汽车营销需求&#xff0c;那么在当下&#xff0c;汽车行业应该如何突破现有营销困境呢&#xff1f;接下来就由媒介盒子跟大家聊聊…...

19 | 如何搞清楚事务、连接池的关系?正确配置是怎样的

事务的基本原理 在学习 Spring 的事务之前&#xff0c;你首先要了解数据库的事务原理&#xff0c;我们以 MySQL 5.7 为例&#xff0c;讲解一下数据库事务的基础知识。 我们都知道 当 MySQL 使用 InnoDB 数据库引擎的时候&#xff0c;数据库是对事务有支持的。而事务最主要的作…...

备忘录模式-撤销功能的实现

在idea写代码的过程中&#xff0c;会经常用到一个快捷键——“crtl z”,即撤销功能。“备忘录模式”则为撤销功能提供了一个设计方案。 1 备忘录模式 备忘录模式提供一种状态恢复机制。在不破坏封装的前提下&#xff0c;捕获对象内部状态并在该对象之外保存这个状态。可以在…...

C++入门(二)

文章目录 一、缺省参数1、概念2、缺省参数分类1、全缺省参数2、半缺省参数 3、特性总结 二、函数重载1、引入函数重载2、函数重载概念3、函数重载分类4、C支持函数重载的原理--名字修饰(name Mangling) 三、 引用1、引用概念2、引用特性3、 常引用4、 使用场景1、做参数2、做返…...

【软件设计师】面向对象类图的六种关系

面向对象类图的六种关系&#xff08;继承、实现、依赖、关联、聚合、组合&#xff09; 1、泛化&#xff08;继承&#xff09;2、实现3、依赖4、关联5、聚合6、组合 面向对象类图的六种关系&#xff08;继承、实现、依赖、关联、聚合、组合&#xff09; 进行面向对象设计时&…...

二十七、【四种蒙版】

文章目录 图层蒙版剪贴蒙版快速蒙版矢量蒙版 图层蒙版 在当前图层加上蒙版&#xff0c;黑色画笔的可以让当前图层消失&#xff0c;白色的画笔可以让当前图层出现&#xff1a; 无论填充什么样的颜色&#xff0c;蒙板只有黑白灰三种颜色。模板最简单应用就是我们在插入图形的时候…...

卡尔曼家族从零解剖-(00)目录最新无死角讲解

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解的 卡尔曼家族从零解剖 链接 :卡尔曼家族从零解剖-(00)目录最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/133846882 文末正下方中心提供了本人 联系…...

Linux系统之ip命令的基本使用

Linux系统之ip命令的基本使用 一、ip命令介绍1.1 ip命令简介1.2 ip命令的由来1.3 ip命令的安装包 二、ip命令使用帮助2.1 ip命令的help帮助信息2.2 ip命令使用帮助 三、查看网络信息3.1 显示当前网络接口信息3.2 显示网络设备运行状态3.3 显示详细设备信息3.4 查看路由表3.5 查…...

【推荐算法】ctr cvr联合建模问题合集

ctr和cvr分开建模相比ctcvr的优势&#xff1f; 在电商搜索推荐排序中&#xff0c;将ctr和cvr分开建模&#xff0c;相比直接建模ctcvr的优势是什么&#xff1f; - 萧瑟的回答 - 知乎 总结&#xff1a; 1、ctr的数据可以试试获取&#xff0c;能实时训练。但是cvr存在延迟现象&…...

安装njnx --chatGPT

gpt: 要在 Debian 11 上安装 Nginx&#xff08;通常称为 "nginx"&#xff09;&#xff0c;您可以使用 apt 包管理器执行以下步骤&#xff1a; 1. **登录到您的 Debian 11 服务器**。您可以使用 SSH 客户端以 root 或具有管理员权限的用户身份登录。 2. **更新软件…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...