当前位置:网站首页>全排列思路详解
全排列思路详解
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());
}
结果
边栏推荐
猜你喜欢
Mysql. Slow Sql
App regression testing, what are the efficient testing methods?
地下管廊可视化管理系统搭建
Where can I download IEEE papers?
16. File upload
nodejs项目连接mysql数据库
I caught a 10-year-old Ali test developer, and after talking about it, I made a lot of money...
SQL注入基础
ROS Experimental Notes - Install QPEP and Intel-MKL
[C] the C language program design, dynamic address book (order)
随机推荐
Excel English automatic translation into Chinese tutorial
回收站的文件删了怎么恢复,回收站文件恢复的两种方法
12. 处理 JSON
[21天学习挑战赛——内核笔记](五)——devmem读写寄存器调试
[C Language Chapter] Detailed explanation of bitwise operators (“<<”, “>>”, “&”, “|”, “^”, “~”)
图像识别和语义分割的区别
力扣每日一题-第52天-387. 字符串中的第一个唯一字符
Part of the reserve bank is out of date
英文文献阅读时,如何做笔记?
编程语言为什么有变量类型这个概念?
There is no recycle bin for deleted files on the computer desktop, what should I do if the deleted files on the desktop cannot be found in the recycle bin?
Server Tips
如何利用原生JS实现回到顶部以及吸顶效果
[Excel知识技能] 将文本型数字转换为数值格式
定时器,同步API和异步API,文件系统模块,文件流
Mysql.慢Sql
[Excel knowledge and skills] Convert text numbers to numeric format
【mysql】mysql分别按年/月/日/周分组统计数据
7. yaml
8. WEB 开发-静态资源访问