算法Day29 打印数目

打印数目

Description

小硕有一套字母表arr,其中每个上都刻有一个字母arr[i]。返回小硕可以印出的非空字母序列的数目。
注意:本题中,每个字母只能使用一次。

Input

输入字符串arr
1≤arr.length≤7

Output

输出可打印数目

Sample

在这里插入图片描述

代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;public class Main {static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));static int count = 0;public static void main(String[] args) throws IOException {String s = reader.readLine();ArrayList<Character> choice = new ArrayList<>();for(int i = 0;i<s.length();i++){choice.add(s.charAt(i));}Collections.sort(choice);backtrack(choice);System.out.println(count);}public static void backtrack(ArrayList<Character> choice){char flag = 0;for(int i = 0;i<choice.size();i++){Collections.sort(choice);char c = choice.get(i);if(c != flag){choice.remove(i);count++;backtrack(choice);choice.add(c);}flag = c;}}}

思路

使用回溯法,与一般对层数迭代不同,这里直接使用数组进入排序,减少了使用全局变量等工作量
每次进行sort排序,是为了将c加入后进入正确的位置,保证恢复现场

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

血的教训,BigDecimal踩过的坑

很多人都用过Java的BigDecimal类型&#xff0c;但是很多人都用错了。如果使用不当&#xff0c;可能会造成非常致命的线上问题&#xff0c;因为这涉及到金额等数据的计算精度。 首先说一下&#xff0c;一般对于不需要特别高精度的计算&#xff0c;我们使用double或float类型就可…

docker-compose的介绍与使用

一、docker-compose 常用命令和指令 1. 概要 默认的模板文件是 docker-compose.yml&#xff0c;其中定义的每个服务可以通过 image 指令指定镜像或 build 指令&#xff08;需要 Dockerfile&#xff09;来自动构建。 注意如果使用 build 指令&#xff0c;在 Dockerfile 中设置…

7 Linux 内核移植

一、编译 ST 的 Linux 系统 1. 压缩源码 首先先下载 ST 官方源码&#xff0c;之前章节已经下载过了&#xff0c;直接输入以下命令&#xff1a; cd linux/atk-mpl/stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.31-r0/ 然…

Linux命令——进程管理

进程管理 一、进程基本介绍二、进程相关命令1、ps2、kill、killall3、top4、pstree 总结 博主最近项目上线&#xff0c;操作了linux系统&#xff0c;感觉命令很容易遗忘&#xff0c;因此总结一下&#xff0c;本文记录的是linux中相关的进程管理命令 一、进程基本介绍 linux中…

java的long类型超过9位报错:the literal 987654321000 of type int is out of range

java的long类型超过9位报错 1、报错提示2、报错截图3、解决办法4、参考文章 1、报错提示 the literal 987654321000 of type int is out of range 2、报错截图 3、解决办法 long类型是一种用于表示较大整数的数据类型&#xff0c;范围比int类型更广泛。然而&#xff0c;即使…

系统延时函数的实现

滴答定时器的工作原理 STM32F103的内核时钟由AHB总线时钟(72M)经过8分频得到&#xff0c;即72/89M LOAD的取值范围是0-1677215&#xff0c;也就是VAL最多可以计2^24次。 滴答定时器的寄存器 系统延时函数的配置 当需要计1us(1/100 0000)时&#xff0c;9M的时钟就要计9次&#x…

Blender学习:走路机器人,骨骼绑定

文章目录 建模骨骼创建骨骼绑定 教程地址&#xff1a;八个案例教程带你从0到1入门blender【已完结】 建模 1 做头&#xff1a;新建立方体&#xff0c;Ctrl2细分并应用&#xff0c;进入编辑模式&#xff0c;删除一半点&#xff0c;然后添加镜像修改器&#xff0c;开启范围限制…

界面控件DevExpress WPF导航组件,助力升级应用程序用户体验!(下)

DevExpress WPF的Side Navigation&#xff08;侧边导航&#xff09;、TreeView、导航面板组件能帮助开发者在WPF项目中添加Windows样式的资源管理器栏或Outlook NavBar&#xff08;导航栏&#xff09;&#xff0c;DevExpress WPF NavBar和Accordion控件包含了许多开发人员友好的…

多域名和通配符SSL证书的区别

域名SSL证书和通配符SSL证书都是SSL数字证书中用一张证书保护多个域名站点的证书产品&#xff0c;这两种类型的SSL数字证书各自有各自的特色&#xff0c;今天就随SSL盾小编了解多域名SSL证书和通配符SSL证书的区别。 1.保护的域名类型不同&#xff1a;多域名SSL证书默认保护3-…

第二证券:强化数字引领,助力跨境电商阳光化发展

12月5日&#xff0c;交通银行深圳分行成功在深圳跨境阳光服务途径落地了跨境电商收汇事务&#xff0c;成为首家与该途径对接跨境电商阳光收款服务的银行。与深圳跨境阳光服务途径的成功对接&#xff0c;是深圳交行深化推动数字化转型&#xff0c;提高金融科技价值创造才干的重要…

vue自定义指令及常用的自定义指令封装

vue2 自定义指令 官网链接https://v2.cn.vuejs.org/v2/guide/custom-directive.html 指令注册 这里是一个 Vue2 的指令合集&#xff0c;详细的指令移步下面具体的指令文章&#xff0c;现在我们在这里要介绍如何在项目中统一管理和使用这些指令。 注册指令 单文件引入注册 …

基于深度学习的yolov5入侵检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介IntroductionYOLOv5 Overview入侵检测系统架构1. 数据采集2. YOLOv5模型训练3. 实时监测4. 告警与反馈 性能评估与优化 二、功能三、系统四. 总结 一项目简…