全排列

经常遇到数字全排列问题,但是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 实现数字全排列相关推荐

  1. 蓝桥杯——Java中的全排列算法

    蓝桥杯--Java中的全排列 全排列的概念 排列 从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个元素的一个排列.不同的顺序是一个不同的排列.从n个元素中取m ...

  2. 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储

    1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...

  3. java 分裂数字_分裂的补充:超越数字,打印物理可视化

    java 分裂数字 As noted in my earlier Nightingale writings, color harmony is the process of choosing colo ...

  4. 【数字全排列】LeetCode 31. Next Permutation

    LeetCode 31. Next Permutation 参考博客:http://www.cnblogs.com/grandyang/p/4428207.html Solution0:一个偷鸡摸狗的 ...

  5. java 判断数字_如何在java中判断一个字符串是否是数字

    前言 数字在某些领域经常用字符串来进行表示和传递.那么我们如何判断一个字符串是否是数字呢?今天我们来探讨一下这个话题. 空字符和null 首先我们可以很清晰的知道空字符""和nul ...

  6. Java 将数字金额转成中文大写

    一个 Java 将数字金额转成中文大写的工具类,还不是很完善. import java.util.regex.Matcher; import java.util.regex.Pattern;publi ...

  7. java吸血鬼数字_吸血鬼数字的简单实现

    从think in java上面看到的吸血鬼数字,自己写了一个简单的实现 package com.zyl; import java.util.ArrayList; import java.util.A ...

  8. Java小数点数字和百分号数字之间的转换

    Java小数点数字和百分号数字之间的转换 小数点数字和百分号(百分比)数字之间的转换在证券金融业很常见,需要经常进行两者之间相互转换.如代码: String s1 = "21.8%" ...

  9. Java—输入数字星期,输出英文(switch语句)

    Java-输入数字星期,输出英文(switch语句) Description 从键盘上输入数字星期,然后输出它的英文. 其对应关系是: 1 Monday 2 Tuesday 3 Wednesday 4 ...

  10. Java液晶数字字体显示当前时间

    Java液晶数字字体显示当前时间 import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Dat ...

最新文章

  1. python自定义库文件路径
  2. python导入其他py文件-Python如何import其它.py文件及其函数
  3. office 2013 安装问题
  4. Cracking Wifi Wpa-Wpa2 in 5 second——Dumpper V.80.8 +JumpStart+WinPcap
  5. 拳王虚拟项目公社:有没免费虚拟资源池,虚拟资源平台该选择什么,虚拟资源整合赚钱
  6. android系统 wifi,Android系统wifi分析-手动连接过程
  7. googel的扩展插件导出与导入
  8. 系统学习NLP(十九)--文本分类之FastText
  9. Web前端开发解耦1
  10. Java sychronized关键字总结(一)
  11. Android开发之手机定位
  12. 河南省旅馆业信息化管理实现“人证核验、无证入住”系统全覆盖
  13. cryptojs AES加密
  14. 良心分享!最全面cmd快捷指令及使用方法,万字总结
  15. 鲁豫有约怎么下载,怎么实现qlv转MP4
  16. 网络原创文章版权维护的辅助好工具copycheck抄袭检测软件
  17. Windows下Python新手安装教程
  18. 统计学 计算机论文发表,数学科学学院博士生史册在统计学顶级期刊 《Annals of Statistics》上发表论文...
  19. 《Biology,8th》Neil Campbell (1)
  20. 牛客Wannafly挑战赛9

热门文章

  1. python123星号直角三角形_Python123:星号三角形、凯撒密码
  2. 安兔兔html5测试跑分榜,2021年最新安兔兔手机性能跑分排行榜
  3. 震惊一个月销800万的模式,全新拼团模式全攻略(运营干货)
  4. swifty引用AFNetworking出现clang: error: linker command failed with exit code 1 (use -v to see invocation
  5. Cloudera Manager 6.2.1安装
  6. 计算机组装与维护标准教程(2010-2012版)电子教材,计算机组装与维护标准教程(2015—2018版)...
  7. 【毕业季】图匮于丰,防俭于逸;治不忘乱,安不忘危。
  8. 物理地址通过什么协议转换为ip地址
  9. Microsoft Teams 创建Outlook邮件组的Team
  10. python使用turtle绘制一个正方形