全排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
公式:全排列数f(n)=n!(定义0!=1)(也可表示为A(n,n)),如1,2,3三个元素的全排列为:123、132、213、231、312、321


代码实现:

import java.util.ArrayList;public class RankSuanFa {/** 排列组合* eg:a b c的排列有abc,acb,bac,bca,cab,cba* 方法:递归,第一层循环把n个数中的第i个装入结果的第一个位置 *     接着将剩下的n-1个数循环装入第二个位置 *     把剩下的n-2个数循环装入第三个位置...*/public static void main(String[] args) {ArrayList<Integer> arrayList=new ArrayList<Integer>();//初始数据arrayList.add(2);arrayList.add(4);arrayList.add(9);arrayList.add(0);StringBuffer data=new StringBuffer();//追加待组合的数据ArrayList<String> results=new ArrayList<String>();//保存排列好的数据rank(arrayList,data,results);int k=0;//按合适的格式输出排列结果for(String s:results) {k++;System.out.print(s+"、");if(k==results.size()/arrayList.size()) {k=0;System.out.println();}}}//主要算法public static void rank(ArrayList<Integer> arrayList, StringBuffer data, ArrayList<String> results) {if(arrayList.size()==0) {results.add(data.toString());}for(int i=0;i<arrayList.size();i++) {data.append(arrayList.get(i));//必须创建新的list,否则原来的list会被改变ArrayList<Integer> newarrayList=new ArrayList<Integer>(arrayList);newarrayList.remove(i);rank(newarrayList,data,results);}//把记录的data最后一个去掉,否则前面的结果会影响循环过程。 if(data.length()!=0) {data.deleteCharAt(data.length()-1);}}
}

运行结果:

2490、2409、2940、2904、2049、2094、
4290、4209、4920、4902、4029、4092、
9240、9204、9420、9402、9024、9042、
0249、0294、0429、0492、0924、0942、

排列组合(Java随笔)—全排列相关推荐

  1. 排列组合 - Java代码实现

    最近发现求排列组合在大公司的笔试算法题中经常作为比较重要的一步出现,所以写篇文章好好整理一下. 首先,回顾一下高中知识...排列组合的公式. 接下来对排列.组合分别给出 Java 代码的实现,而且每个 ...

  2. 语言 全排列 函数_【排列组合】错位全排列的简化计算公式

    一.错位全排列问题 什么是错位全排列问题?其实很简单,在生活中可能都会遇到: "装错信封问题"是由当时最有名的数学家约翰·伯努利(Johann Bernoulli,1667-174 ...

  3. 子字符串组合 java_abc三字符实现排列组合-JAVA版

    1.概述 在高中的时候经常会遇到一些排列组合的问题,那个时候基本上都是基于公式计算的.其实理论上是可以枚举出来的,而计算机最擅长的事情就是枚举,本文主要讨论a,b,c三个字符的各种排列组合问题,当字符 ...

  4. java 分治法排序_分治法实现1-N的数字按字典序全排列组合 Java语言

    package 分治法; import java.util.Arrays; /* * 将数字 1 - n进行全排列 按字典序从小到大输出 * 如 1 - 3 * 123 132 213 231 312 ...

  5. java排列组合(递归算法)

    一.排列 1.计算公式如下: 2.使用方法,例如在1,2,3,4,5中取3个数排列: 3.全排列 当m=n时,结果为全排列.例如1,2,3,4的全排列如下: 4.代码实现求无重复数组的全排列 /*** ...

  6. java排列组合问题汇总【经典】

    面试或笔试中,多次遇到以下4个关于排列组合的手撕算法,这里做个笔记,方法日后查阅: 1. 无重复元素的数组,求全排列: 2. 有重复元素的数组,求全排列: 3. 无重复元素的数组,求组合[子集]: 4 ...

  7. 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  8. 排列组合算法总结(含Java实现)

    一. 排列组合 1. 排列 (1)排列:从n个元素中排列m个元素. Amn=n∗(n−2)∗...∗(n−m+1)=Cmn∗m!A_n^m=n*(n-2)*...*(n-m+1)=C_n^m*m! ( ...

  9. java 数组的排列组合_java数组排列组合问题汇总

    面试或笔试中,多次遇到以下4个关于排列组合的手撕算法,这里做个笔记,方法日后查阅: 1. 无重复元素的数组,求全排列: 2. 有重复元素的数组,求全排列: 3. 无重复元素的数组,求组合[子集]: 4 ...

最新文章

  1. Flutter开发之WebView加载网页(24)
  2. python语言介绍-Python语言简介
  3. 如何在Hadoop上编写MapReduce程序
  4. 宏病毒的研究与实例分析06——终结篇 进击的MACRO
  5. 1CCTableView的使用,TableView响应和小格子tableView实现
  6. python环境变量的配置 alias_vim-python环境配置
  7. html5引入外联样式的优先级,CSS的4种引入方式及优先级
  8. shell编程中特殊字符的问题总结
  9. mysql字段使用timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间,类似mssql的getdate()功能;字段自增...
  10. 阅读笔记:基础知识(Java篇)
  11. C++ namespace
  12. 网络编程C/S模型怎样才能实现真正的聊天功能
  13. java合并sheet行_java poi Excel循环合并行
  14. 哔哩哔哩公布2021年度弹幕:“破防了”
  15. 《Web漏洞防护》读书笔记——第5章,数据安全
  16. 去掉右键的“使用skype共享”
  17. Parallels Desktop 13 for Mac 中文正式版下载 – 优秀的虚拟机
  18. Synergy:亚马逊云服务(AWS)在亚太地区排名第一
  19. python中用来返回序列的最大函数_Python内置函数____________用来返回序列中的最大元素。...
  20. 显卡的优化以提高计算机性能作用,显卡优化,教您如何设置NVIDIA(英伟达)显卡玩游戏性能更高...

热门文章

  1. 计算机二级多少人优秀,计算机二级各科通过率是多少
  2. 仿瑞吉外卖 【手机登陆功能换成邮件登陆】
  3. 阿里旺旺自动回复工具开发一
  4. 《软硬结合——从零打造物联网》
  5. 外边距与内边距的区别
  6. 把色*版 “微信” 的底裤都给挖出来了,网友: 草率了。。。
  7. HTML + CSS 宝典 第二节 HTML 核心1
  8. 太原理工大学 计算机专业课程,太原理工大学最全专业介绍
  9. upupoo视频使用Java代码下载
  10. 防止机械/移动硬盘休眠 - NoSleepHD