leetcode 526. 优美的排列(回溯)

news2024/11/25 6:35:18

题目链接:526. 优美的排列

回溯

树型结构:
请添加图片描述

预处理 m a t c h match match 数组(每个位置符合条件的数有哪些):

    void getMatch(int n) {
        used.resize(n + 1);
        match.resize(n + 1);
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                if (i % j == 0 || j % i == 0) {
                    match[i].push_back(j);
                }
            }
        }
    }

(1) 回溯函数参数及返回值:
i n d e x index index 记录遍历到第几个数字, 表示递归的深度。
u s e d used used 数组记录排列里哪些元素已经被使用了,一个排列里一个元素只能使用一次。
m a t c h match match 二维数组用来存放不同的集合(每个位置符合条件的数有哪些),每个 i n d e x index index 对应一个集合。
r e s res res 表示符合条件的集合的个数。

    vector<bool> used;
    vector<vector<int>> match;
    int res;
    void backtracking(int n, int index) {

(2) 终止条件:
由树型结构可知,当 i n d e x = = n + 1 index == n + 1 index==n+1, 收集结果并返回。

        if (index == n + 1) {
            res++;
            return;
        }

(3) 确定单层递归逻辑:
首先要取 i n d e x index index 对应的 m a t c h match match 里面的数字,然后 f o r for for 循环来处理这个集合。
一个排列里的一个元素只能使用一次,所以当该元素已经被使用,直接 c o n t i n u e continue continue
注意递归参数要 i n d e x + 1 index + 1 index+1, 因为下一层要处理下一个数字了。

        for (auto& x : match[index]) {
            if (used[x] == true) {
                continue;
            }
            used[x] = true;
            backtracking(n, index + 1);
            used[x] = false;
        }

代码如下:

class Solution {
private:
    vector<bool> used;
    vector<vector<int>> match;
    int res;
    void backtracking(int n, int index) {
        if (index == n + 1) {
            res++;
            return;
        }
        for (auto& x : match[index]) {
            if (used[x] == true) {
                continue;
            }
            used[x] = true;
            backtracking(n, index + 1);
            used[x] = false;
        }
    }
    void getMatch(int n) {
        used.resize(n + 1);
        match.resize(n + 1);
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                if (i % j == 0 || j % i == 0) {
                    match[i].push_back(j);
                }
            }
        }
    }
public:
    int countArrangement(int n) {
        getMatch(n);
        backtracking(n, 1);
        return res;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/47104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

供应双功能螯合剂THP-Mal,THP 马来酰亚胺,CAS:1314929-99-1

一&#xff1a;产品描述 1、名称 THP-Mal THP Maleimide THP 马来酰亚胺 2、CAS编号&#xff1a;1314929-99-1 3、分子式&#xff1a;C44H57N9O13 4、分子量&#xff1a;919.41 5、外观&#xff1a;白色或者灰白色粉末 6、沸点&#xff1a;1389.365.0 C(Predicted) …

内网穿透无法访问本地wordpress网站

解决办法:在wordpress主目录下修改wp-config.php文件 增加2行代码。 define(WP_SITEURL, http:// . $_SERVER[HTTP_HOST]); define(WP_HOME, http:// . $_SERVER[HTTP_HOST]); 增加2代码的意思&#xff1a;设置网站域名为当前访问的域名&#xff0c;也就是取消了域名的绑定。…

Linux下 生成coredump文件前配置

一. Linux下coredump文件 在 Linux 系统下&#xff0c;存在一种 coredump机制。 Linux 系统下&#xff0c;在进行 C/C 开发时&#xff0c;经常会遇到程序运行突然崩溃的问题。这时可以通过离线调试即 coredump 方式进行 bug 的定位。 具体为当程序出现段错误时&#xff0c;内…

用匠心创造可期未来!与广州流辰信息科技一起携手创佳绩!

当今社会世界经济一体化趋势逐渐明朗化&#xff0c;竞争也愈发激烈&#xff0c;同时&#xff0c;这也是一个机遇与挑战并存的开放社会。在机遇面前&#xff0c;作为企业&#xff0c;要紧紧抓住机遇&#xff0c;顺势而为&#xff0c;创造辉煌佳绩&#xff1b;在挑战面前&#xf…

Hostlink读写寄存器报文分析

引言 Hostlink是欧姆龙PLC默认的串口上行通信协议&#xff0c;使用默认的通信协议可免除PLC端的配置工作&#xff0c;易于实现分工协作。下面以CP1E-E的PLC为例进行说明&#xff0c;CP系列的PLC规则都是一样的。 读离散量 请求报文 字节流 40 33 31 46 41 30 30 30 30 30 3…

[Jetson]在nvidia orin/xavier上快速配置深度学习环境(Tensorflow,Pytorch都可以参考)

本文章将介绍如何通过docker在边缘计算设备nvidia orin/xavier上快速配置深度学习环境.该方法适用于Tensorflow,Pytorch,但是本文以介绍Tensorflow的安装为主. 文章目录第一步:安装docker第二步:安装nvidia-docker2第三步:拉取tensorflow镜像3.1 确定容器版本3.2 拉取镜像3.3 测…

awk命令应用

记录&#xff1a;353 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;使用awk文本处理工具处理文本&#xff1b;使用awk、cat和grep搭配使用处理文本&#xff1b;使用awk直接处理文本&#xff1b;使用shell脚本调用awk脚本处理文本。 版本&#xff1a; 操作系统&#x…

基于神经网络彩色图像插值研究-附Matlab程序

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、色彩过滤阵列CFA✳️ 三、BP网络结构✳️ 四、神经网络彩色图像插值实验验证✳️ 五、参考文献✳️ 六、Matlab程序获取与验证✳️ 一、引言 彩色图像插值是通过估算相邻像素来估计缺失的颜色分量的过程&#xff0c;数字相机通过色彩过滤…

若依对SpringSecurity框架的运用

引言&#xff1a;借助ruoyi-vue框架学习其对SpringSecurity框架的运用。若依的前后端分离版本基于SpringSecurity和JWT配合Redis来做用户状态记录. 1 SpringSecurity 1.1 入口 后台接收登录数据&#xff0c;基于用户名和密码封装一个(UsernamePasswordAuthenticationToken)认…

线程安全和synchronized关键字

一&#xff0c;线程安全的引入 1.示例 多线程在多进程的基础上更好解决了并发问题&#xff0c;但由于一个进程内的多个线程是资源共享的&#xff0c;就会出现多个线程在并发执行的时候造成内存中数据的混乱。 举一个例子&#xff1a; class Counter {public int count;publi…

hypervision理解的记录

目录 一、hypervision介绍 Type 1 Hypervisor Type 2 Hypervisor 二、QNX hypervision是TYPE1的虚拟机 三、QNX hypervision架构 1、VMM (虚拟机管理器) 2、virtual-net 3、qnx官网 network 九、其他 一、hypervision介绍 首先&#xff0c;hypervision分为Type1和Type2…

SpringBoot添加外部jar包及打包(亲测有效) - 第452篇

历史文章&#xff08;文章累计450&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 深入Feign源码吃透Spring扩展点「扩展点…

亿级异构任务调度框架设计与实践

背景 阿里云日志服务作为云原生可观测与分析平台。提供了一站式的数据采集、加工、查询分析、可视化、告警、消费与投递等功能。全面提升用户的研发、运维、运营、安全场景的数字化能力。 日志服务平台作为可观测性平台提供了数据导入、数据加工、聚集加工、告警、智能巡检、…

“200万天价床垫”引发的思考:普通床垫越卖越贵是推测还是事实

定制床垫价格高达200万元&#xff1f;近段时间&#xff0c;一场娱乐圈的闹剧让大家把目光转向了床垫市场。在天价床垫的话题下&#xff0c;除了大部分猜测床垫品牌的讨论以外&#xff0c;也有不少人认为指出了“社会现状”&#xff1a;健康品质化的消费追求正在让市面上的床垫价…

Python_数据容器_字典

一、字典&#xff08;映射&#xff09;的定义 生活中的字典&#xff1a; 【字】&#xff1a;【含义】 可以按【字】找出对应的【含义】 Python中的字典&#xff1a; key : value 可以按照[key]找出对应的[value] 1、Python字典使用场景&#xff1a; 通过使用字典&#…

uni-app 之 web-view 与h5 通讯

官网文档&#xff1a;https://uniapp.dcloud.net.cn/component/web-view.html#getenv web-view 是一个 web 浏览器组件&#xff0c;可以用来承载网页的容器&#xff0c;会自动铺满整个页面&#xff08;nvue 使用需要手动指定宽高&#xff09;。 各小程序平台&#xff0c;web-v…

图像下采样再上采样维度不匹配

图像在下采样后再上采样&#xff0c;维度会发生不匹配&#xff0c;假设一幅图像的维度为(b,c,h,w)&#xff0c;那么当h和w是偶数的时候&#xff0c;下采样和上采样是匹配的&#xff0c;当且仅当他是偶数的时候才匹配&#xff0c;然而图像的h和w往往不一定是偶数。当然有许多种方…

【Shell 脚本速成】06、Shell 数组详解

目录 一、数组介绍 二、数组定义 三、数组赋值方式 四、数组取值 案例演示 五、关联数组 5.1 定义管理数组 5.2 关联数组赋值 5.3 管理数组取值 5.4 综合案例 有这样一个现实问题&#xff1a;一个班级学员信息系统&#xff0c;要求存储学员ID、NAME、SCORE、AGE、GE…

关于订单功能的处理和分析

这两天看了一下RABC的权限管理处理&#xff0c;梳理了一下订单功能的表创建&#xff0c;界面&#xff0c;功能分析。 目录 RABC RBAC0模型 那么对于RABC模型我们怎么创建数据库表&#xff1f; 订单模块的梳理 RABC RABC说的是在用户和权限之间多一个角色&#xff0c;用户与…

软件测试基础

⭐️前言⭐️ &#x1f349;博客主页&#xff1a; &#x1f341;【如风暖阳】&#x1f341; &#x1f349;精品Java专栏【JavaSE】、【备战蓝桥】、【JavaEE初阶】、【MySQL】、【数据结构】 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&…