Java 实现数字全排列
全排列
经常遇到数字全排列问题,但是java不像c++和python一样有专门全排列的函数,所以说特麻烦,后面借鉴了一下下别人的java全排列。我觉得还挺好理解和推算的。
import java.util.HashSet;
import java.util.Scanner;
public class FullArrange {/** @Author YanYiQi* @Description* @Date 2022/3/29* HashSet :使用哈希set存储排列的数字,顺便起到查重的作用。* m:表示数字长度* cnt:用来存放数字为 i 的数有多少个*/static HashSet<Integer> set = new HashSet<>(); static int m;static int[] cnts = new int[10];public static void main(String[] args) {Scanner s = new Scanner(System.in);int num = s.nextInt();while(num != 0){cnts[num%10]++;num /=10;m++;}dfs(0,0);ArrayList<Integer> list = new ArrayList<>(set);for (int n:list) {System.out.print(n + " ");}}static void dfs(int u,int cur){if(u == m){set.add(cur);//长度到达值时加入set中return;}for (int i = 0; i <10; i++) {if(cnts[i] != 0){cnts[i]--;if(i != 0 || cur != 0){dfs(u+1,cur*10+i);//递归调用下去}cnts[i]++;//回溯原状态}}}
}
运行结果如下,因为set无序嘛,所以输出的就没顺序,但是找的时候直接转成list找。
Java 实现数字全排列相关推荐
- 蓝桥杯——Java中的全排列算法
蓝桥杯--Java中的全排列 全排列的概念 排列 从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个元素的一个排列.不同的顺序是一个不同的排列.从n个元素中取m ...
- 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储
1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...
- java 分裂数字_分裂的补充:超越数字,打印物理可视化
java 分裂数字 As noted in my earlier Nightingale writings, color harmony is the process of choosing colo ...
- 【数字全排列】LeetCode 31. Next Permutation
LeetCode 31. Next Permutation 参考博客:http://www.cnblogs.com/grandyang/p/4428207.html Solution0:一个偷鸡摸狗的 ...
- java 判断数字_如何在java中判断一个字符串是否是数字
前言 数字在某些领域经常用字符串来进行表示和传递.那么我们如何判断一个字符串是否是数字呢?今天我们来探讨一下这个话题. 空字符和null 首先我们可以很清晰的知道空字符""和nul ...
- Java 将数字金额转成中文大写
一个 Java 将数字金额转成中文大写的工具类,还不是很完善. import java.util.regex.Matcher; import java.util.regex.Pattern;publi ...
- java吸血鬼数字_吸血鬼数字的简单实现
从think in java上面看到的吸血鬼数字,自己写了一个简单的实现 package com.zyl; import java.util.ArrayList; import java.util.A ...
- Java小数点数字和百分号数字之间的转换
Java小数点数字和百分号数字之间的转换 小数点数字和百分号(百分比)数字之间的转换在证券金融业很常见,需要经常进行两者之间相互转换.如代码: String s1 = "21.8%" ...
- Java—输入数字星期,输出英文(switch语句)
Java-输入数字星期,输出英文(switch语句) Description 从键盘上输入数字星期,然后输出它的英文. 其对应关系是: 1 Monday 2 Tuesday 3 Wednesday 4 ...
- Java液晶数字字体显示当前时间
Java液晶数字字体显示当前时间 import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Dat ...
最新文章
- python自定义库文件路径
- python导入其他py文件-Python如何import其它.py文件及其函数
- office 2013 安装问题
- Cracking Wifi Wpa-Wpa2 in 5 second——Dumpper V.80.8 +JumpStart+WinPcap
- 拳王虚拟项目公社:有没免费虚拟资源池,虚拟资源平台该选择什么,虚拟资源整合赚钱
- android系统 wifi,Android系统wifi分析-手动连接过程
- googel的扩展插件导出与导入
- 系统学习NLP(十九)--文本分类之FastText
- Web前端开发解耦1
- Java sychronized关键字总结(一)
- Android开发之手机定位
- 河南省旅馆业信息化管理实现“人证核验、无证入住”系统全覆盖
- cryptojs AES加密
- 良心分享!最全面cmd快捷指令及使用方法,万字总结
- 鲁豫有约怎么下载,怎么实现qlv转MP4
- 网络原创文章版权维护的辅助好工具copycheck抄袭检测软件
- Windows下Python新手安装教程
- 统计学 计算机论文发表,数学科学学院博士生史册在统计学顶级期刊
《Annals of Statistics》上发表论文...
- 《Biology,8th》Neil Campbell (1)
- 牛客Wannafly挑战赛9
热门文章
- python123星号直角三角形_Python123:星号三角形、凯撒密码
- 安兔兔html5测试跑分榜,2021年最新安兔兔手机性能跑分排行榜
- 震惊一个月销800万的模式,全新拼团模式全攻略(运营干货)
- swifty引用AFNetworking出现clang: error: linker command failed with exit code 1 (use -v to see invocation
- Cloudera Manager 6.2.1安装
- 计算机组装与维护标准教程(2010-2012版)电子教材,计算机组装与维护标准教程(2015—2018版)...
- 【毕业季】图匮于丰,防俭于逸;治不忘乱,安不忘危。
- 物理地址通过什么协议转换为ip地址
- Microsoft Teams 创建Outlook邮件组的Team
- python使用turtle绘制一个正方形