当前位置:网站首页>全排列思路详解
全排列思路详解
2022-08-10 23:55:00 【牛牛最爱喝兽奶】
详解全排列
分析
在这里提到的全排列,和高中数学里遇到的全排列几乎是一个概念。主要应用于选择、求解概率事件的时候会用到全排列。
也就是说我们可以从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
公式: 全排列数f(n)=n!(定义0!=1)
简介
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
公式:全排列数f(n)=n!(定义0!=1),如1,2,3三个元素的全排列为:
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
共321=6种。
代码分析
针对于字符串"ABC",理论上我们得到的结果应该是"ABC ACB CBA CAB BAC BCA",6种情况。
其实我们可以简单理解为生活中的老大、老二、老三这样情况,每一次轮流一个字符出来承担老大的职责,接着老二,最后在老三,这样每一轮就会得到一种排列顺序。最后避免有重复的字符串存在,我们可以采用set集合的方式来接收;
代码如下:
public static void quanpailie(char[] arr, int from, int to, Set<String> set){
if(from>=to){
set.add(new String(arr));
return;
}
for(int i=from;i<=to;i++){
swap(arr,i,from);//轮流当老大
quanpailie(arr,from+1,to,set);//轮到下一个选老二 老三
swap(arr,i,from);//还原 回溯
}
}
private static void swap(char[] arr, int i, int from) {
char c = arr[i];
arr[i] = arr[from];
arr[from] = c;
}
public static void main(String[] args) {
Set<String> set = new HashSet<>();
quanpailie("ABC".toCharArray(),0,2,set);
System.out.println(set.toString());
}
结果
边栏推荐
- [Excel知识技能] 将“假“日期转为“真“日期格式
- Summary of Confused Knowledge Points for "High Items" in the Soft Examination in the Second Half of 2022 (2)
- web 性能提升(将持续更新……)
- 14. Thymeleaf
- u盘数据不小心删除怎么恢复,u盘数据删除如何恢复
- 【pypdf2】安装、读取和保存、访问页面、获取文本、读写元数据、加密解密
- 【mysql】mysql分别按年/月/日/周分组统计数据
- 【openpyxl】过滤和排序
- 【.NET Core】使用 NPOI 读写Excel 文件
- 英文文献阅读时,如何做笔记?
猜你喜欢
【爬虫】scrapy创建运行爬虫、解析页面(嵌套url)、自定义中间件(设置UserAgent和代理IP)、自定义管道(保存到mysql)
Why do programming languages have the concept of variable types?
Is there a way out in the testing industry if it is purely business testing?
[Excel知识技能] 将数值格式数字转换为文本格式
u盘数据不小心删除怎么恢复,u盘数据删除如何恢复
Starting a new journey - Mr. Maple Leaf's first blog
只会懒汉式和饿汉式 你还不懂单例模式!
Dump文件生成,内容,以及分析
【redis】发布和订阅消息
如何便捷获取参考文献的引用格式?
随机推荐
The Missing Semester of Your CS Education
SAS data processing technology (1)
Mysql.慢Sql
[Excel知识技能] 将数值格式数字转换为文本格式
[C language] Detailed explanation of data storage
编程语言为什么有变量类型这个概念?
只会懒汉式和饿汉式 你还不懂单例模式!
Excel English automatic translation into Chinese tutorial
回收站的文件删了怎么恢复,回收站文件恢复的两种方法
如何判断一个数为多少进制?
Mysql. Slow Sql
15. 拦截器-HandlerInterceptor
Cache knowledge summary
[C language] First understanding of pointers
图像识别和语义分割的区别
Lens filter---about day and night dual-pass filter
How to recover deleted files from the recycle bin, two methods of recovering files from the recycle bin
ADC和DAC记录
ROS实验笔记之——安装QPEP以及Intel-MKL
Pagoda Test-Building PHP Online Mock Exam System