蓝桥杯算法心得——拼数(排列型回溯dfs)

news2024/11/20 4:50:07

大家好,我是晴天学长,排列型的dfs,在一些需要暴搜的题中很中很重要,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪


1) .拼数

在这里插入图片描述


2) .算法思路

超级递归

1.遍历数组,选中为true
有三层遍历,但都可以交给递归。
2.注意回溯的状态


3).算法步骤

1.创建一个整数变量ans,用于记录拼接数的个数。
2.创建静态整数变量k和整数数组num,用于存储输入的拼接数的要求和数字数组。
3.创建一个HashSet集合set,用于存储所有可能的拼接数。
4.在main方法中,接收输入的整数n和k1,分别表示数字数组的长度和拼接数的要求。
5.将k1赋值给变量k,并创建一个长度为n的整数数组nums,将其赋值给num。
6.使用循环接收数字数组的输入。
7.创建一个布尔数组st,用于标记数字数组中的元素是否已经被访问过。
8.调用dfs方法,传入初始长度0、空字符串s和布尔数组st。
9.在dfs方法中,判断如果当前路径的长度等于拼接数的要求k:
a. 将当前拼接数s添加到集合set中。
b. 返回。
10遍历数字数组num的每个元素:
a. 如果当前元素未被访问:
(1)将当前元素转换为字符串s1。
(2)将当前元素标记为已访问。
(3)将当前元素拼接到拼接数s的末尾。
(4)递归调用dfs方法,传入长度加1、更新后的拼接数s和布尔数组st。
(5)将当前元素标记为未访问,以便后续的回溯。
(6)将拼接数s从末尾删除当前元素的长度,恢复路径状态。
11.输出集合set的大小,即拼接数的个数。


4). 代码实例

package LanQiaoTest.DFS;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class 拼数 {
    int ans = 0;
    static int k;
    static int[] num;
    static Set<String> set = new HashSet<>();

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k1 = scanner.nextInt();
        k = k1;
        int[] nums = new int[n];
        num = nums;
        //接受数据
        for (int i = 0; i < n; i++) {
            nums[i] = scanner.nextInt();
        }
        boolean[] st = new boolean[n];
        dfs(0, "", st);
        System.out.println(set.size());
    }

    public static void dfs(int length, String s, boolean[] st) {
        //出口
        if (length == k) {
            set.add(s);
            return;
        }
        for (int i = 0; i < num.length; i++) {
            if (!st[i]) {
                String s1 = Integer.toString(num[i]);
                st[i] = true;
                s = s + s1;
                dfs(length + 1, s, st);
                st[i] = false;
                s = s.substring(0, s.length() - s1.length());
            }
        }
    }
}


4).总结

  • 怎么排列,怎么回溯。

试题链接:

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

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

相关文章

想要和猫妹一起学Python吗?快进群吧

这是一篇2024年猫妹学Python新同学召集令&#xff0c;感兴趣的朋友可以看下。 初始Python 猫爸第一次被Python惊艳&#xff0c;是几年前的一个风格迁移程序。 国外某大学的一篇博士论文&#xff0c;为风格迁移提供了理论支撑。 下载到模型之后&#xff0c;就可以用简单的Py…

Linux的基本指令(1)

目录 快速认识的几个指令 pwd指令 mkdir指令 touch指令 cd指令 clear指令 whoami指令 ls指令 ls -l ls -la ls 目录名 ls -ld 目录名 文件 路径 路径是什么&#xff1f; 路径的形成 ​ 怎么保证路径必须有唯一性&#xff1f; ls -la隐藏文件 隐藏文件的是什…

UnRaid安装安装仓库管理系统GreaterWMS

文章目录 0、前言1、安装流程1.1、克隆GreaterWMS项目到UnRaid本地目录1.2、修改项目前后端端口1.3、修改baseurl1.4、修改Nginx.conf配置文件1.5、安装依赖插件1.5.1、Docker Compose Manager插件1.5.2、Python3环境 1.6、创建GreaterWMS容器1.6.1、为前后端启动脚本赋执行权限…

C++ static关键字

C static关键字 1、概述2、重要概念解释3、分情况案例解释3.1 static在类内使用3.2 static在类外使用案例一&#xff1a;案例二&#xff1a;案例三 1、概述 static关键字分为两种情况&#xff1a; 1.在类内使用 2.在类外使用 2、重要概念解释 &#xff08;1&#xff09;翻译…

keepalived+Nginx+邮件

实验场景&#xff1a; 我使用keepalived保证nginx的高可用&#xff0c;我想知道什么时候ip发生漂移&#xff0c;可以让ip发生漂移的时候 我的邮箱收到消息. 如果对keepalived不了解&#xff0c;这有详细解释&#xff1a;keepalived与nginx与MySQL-CSDN博客https://blog.csdn.ne…

在Spring Boot中使用JTA实现对多数据源的事务管理

了解事务的都知道&#xff0c;在我们日常开发中单单靠事务管理就可以解决绝大多数问题了&#xff0c;但是为啥还要提出JTA这个玩意呢&#xff0c;到底JTA是什么呢&#xff1f;他又是具体来解决啥问题的呢&#xff1f; JTA JTA&#xff08;Java Transaction API&#xff09;是…

思维模型 梅拉宾法则

1 梅拉宾法则的应用 1.1 演讲口才中的梅拉宾法则应用 苹果公司的演讲&#xff1a;苹果公司的演讲一直以来都以其独特的风格和效果著称。苹果公司的演讲者在演讲中注重运用肢体语言和声音等非语言因素&#xff0c;如手势、表情和语调等&#xff0c;来增强演讲的效果。例如&am…

Linux文件类型与权限及其修改

后面我们写代码时&#xff0c;写完可能会出现没有执行权限什么的&#xff0c;所以我们要知道文件都有哪些权限和类型。 首先 就像我们之前目录结构图里面有个/dev,它就是存放设备文件的&#xff0c;也就是说&#xff0c;哪怕是一个硬件设备&#xff0c;例如打印机啥的&#xf…

Linux学习教程(第一章 简介)3

第一章 简介 七、Linux系统的优缺点 前面章节提到&#xff0c;相比 Windows 系统&#xff0c;Linux 系统有更好的稳定性&#xff0c;那么除此之外&#xff0c;Linux 系统还有那些优点&#xff08;或者不足&#xff09;呢&#xff1f;本节带领大家详细了解一下。 1、大量的可…

【Kurbernetes集群】Pod资源、Pod资源限制和Pod容器的健康检查(探针)详解

Pod资源 一、Pod概述1.1 Pod的定义1.2 一个Pod能包含几个容器&#xff1f;1.3 Pod的分类1.3.1 控制器管理的Pod1.3.2 自主式Pod1.3.3 静态Pod 1.4 Pod中容器的分类1.4.1 Pause容器1.4.2 初始化容器1.4.3 应用容器 1.5 Pod常见的状态 二、Pod中的策略2.1 镜像拉取策略2.2 Pod中容…

另辟奚径-Android Studio调用Delphi窗体

大家都知道Delphi能调用安卓SDK&#xff0c;比如jar、aar等&#xff0c; 但是反过来&#xff0c;能在Android Studio中调用Delphi开发的窗体吗&#xff1f; 想想不太可能吧&#xff0c; Delphi用的是Pascal&#xff0c;Android Studio用的是Java&#xff0c;这两个怎么能混用…

AI时代如何提升自己晋升力

要在AI时代提升职场晋升力&#xff0c;采取以下详细策略&#xff1a; 终身学习的实践&#xff1a; 专业课程&#xff1a; 定期参加在线课程或研讨会&#xff0c;如Coursera、edX等&#xff0c;学习最新的AI技术和行业动态。行业资讯&#xff1a; 订阅相关的行业杂志、博客&…

通过海康私有协议Ehome/ISUP协议将海康摄像头、录像机等设备统一接入到LiveNVR Web流媒体平台实现统一汇聚及Web播放等的配置说明,

LiveNVR海康摄像头海康NVR通过EHOME协议ISUP协议接入支持转GB28181级联 1、海康 ISUP 接入配置2、海康设备接入2.1、海康EHOME接入配置示例2.2、海康ISUP接入配置示例 3、通道配置3.1、直播流接入类型 海康ISUP3.2、海康 ISUP 设备ID3.3、启用保存3.4、接入成功 4、相关问题4.1…

初识RabbitMQ - 安装 - 搭建基础环境

RabbitMQ 各个名词介绍 Broker&#xff1a;接收和分发消息的应用&#xff0c;RabbitMQ Server 就是 Message Broker Virtual host&#xff1a;出于多租户和安全因素设计的&#xff0c;把 AMQP 的基本组件划分到一个虚拟的分组中&#xff0c;类似于网络中的 namespace 概念。当…

毅速课堂丨3D打印随形水路在注塑生产中的优势

随着科技的不断发展&#xff0c;3D打印技术已经成为了模具制造领域的一种重要技术。其中&#xff0c;3D打印随形水路在注塑生产中的应用也越来越广泛。 3D打印随形水路在注塑生产中的优势主要有以下几点&#xff1a; 一、提高生产效率 3D打印随形水路可以根据注塑产品的形状和…

帝国cms中如何让外部链接直接从新窗口打开页面

<?php if($bqr[isurl]) { ?> <a href"<?$bqsr[titleurl]?>" target"_blank"> <?php } else { ?> <a href"<?$bqsr[titleurl]?>"> <?php } ?>

.NET快速对接极光消息推送

什么是消息推送&#xff1f; 很多手机APP会不定时的给用户推送消息&#xff0c;例如一些新闻APP会给用户推送用户可能感兴趣的新闻&#xff0c;或者APP有更新了&#xff0c;会给用户推送是否选择更新的消息等等&#xff0c;这就是所谓的“消息推送”。 常见的一些APP消息推送…

使用idea插件快速生成arthas命令

这里分享一个插件&#xff0c;叫做arthas idea。 这个插件我主要是用来在本地生成一些要使用的arthas命令&#xff0c;然后复制到线上使用&#xff0c;这样可以避免记忆大量的arthas命令&#xff0c;加速排查效率&#xff0c;不过哪种情况要用哪些arthas命令&#xff0c;还是需…

Mac下eclipse配置JDK

一、配置JDK&#xff0c;需要电脑下载Java并且配置环境 Mac环境配置&#xff08;Java&#xff09;----使用bash_profile进行配置&#xff08;附下载地址&#xff09; (1)、左上角找到“Eclipse”-->“Preferences...” (2)、找到“Java”-->“Installde JREs”-->界…

【Acwing171】送礼物(双向dfs)题解

本题思路来源于acwing算法提高课 题目描述 看本文需要准备的知识 1.二分&#xff08;强烈推荐文章&#xff1a;http://t.csdnimg.cn/Mx9Lr&#xff09; 2.dfs基本思想&#xff0c;了解“剪枝”这个术语 思路分析 首先这道题目看起来就是一个01背包&#xff0c;但是如果直接…