Java基于递归解决全排列问题算法示例
时间:2021-01-12 13:19:34|栏目:JAVA代码|点击: 次
本文实例讲述了Java基于递归解决全排列问题算法。分享给大家供大家参考,具体如下:
排列问题
设R={r1,r2,...,rn}是要进行排列的n个元素,Ri=R-{ri}。集合x中元素的全排列记为Perm(X)。(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列。R的全排列可归纳如下:
当n=1时,Perm(R)=(r),其中r是集合中唯一的元素;
当n>1时,Perm(R)由(r1)Perm(R1),(r2)Perm(R2),(r3)Perm(R3)。。。。(rn)Perm(Rn)构成。
public class AllSort { public static void perm(int[] list, int k, int m) { if( k == m) { for (int i = 0; i <=m; i++) { System.out.print(list[i]); } System.out.println(); } else{ for(int i = k; i <= m; i++) { swap(list,k,i); perm(list, k+1 , m); swap(list,k,i); } } } public static void swap(int[] list, int a, int b) { int temp; temp = list[a]; list[a] = list[b]; list[b] = temp; } public static void main(String args[]) { int[] list = new int[5]; for(int i = 0; i < list.length; i++) { list[i] = i+1; } perm(list,0,list.length-1); } }
运行结果:
12345 12354 12435 12453 12543 12534 13245 13254 13425 13452 13542 13524 14325 14352 14235 14253 14523 14532 15342 15324 15432 15423 15243 15234 21345 21354 21435 21453 21543 21534 23145 23154 23415 23451 23541 23514 24315 24351 24135 24153 24513 24531 25341 25314 25431 25413 25143 25134 32145 32154 32415 32451 32541 32514 31245 31254 31425 31452 31542 31524 34125 34152 34215 34251 34521 34512 35142 35124 35412 35421 35241 35214 42315 42351 42135 42153 42513 42531 43215 43251 43125 43152 43512 43521 41325 41352 41235 41253 41523 41532 45312 45321 45132 45123 45213 45231 52341 52314 52431 52413 52143 52134 53241 53214 53421 53412 53142 53124 54321 54312 54231 54213 54123 54132 51342 51324 51432 51423 51243 51234
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
上一篇:Java Spring Controller 获取请求参数的几种方法详解
栏 目:JAVA代码
下一篇:浅谈SpringBoot2.3 新特配置文件属性跟踪
本文标题:Java基于递归解决全排列问题算法示例
本文地址:http://www.codeinn.net/misctech/44199.html
阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机