递归与分治策略-2.1.4全排列
来源:互联网 发布:qq强制视频软件2015 编辑:程序博客网 时间:2024/06/04 19:47
public class test2_1_4 { public static void perm(Object[] list,int k,int m){ //产生list[k: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(Object[] list,int i,int j){ Object obj; obj = list[i]; list[i] = list[j]; list[j] = obj; } public static void main(String[] args) { Object[] list = {"1","2","3"}; perm(list,0,list.length-1); }}
运行结果如下:
123132213231321312
递归调用详细过程:
1.swap(list,2,2); perm(list,3,3); 123 swap(list,2,2); swap(list,1,1); 2.swap(list,2,3); perm(list,2,3); perm(list,3,3); 132swap(list,1,1); swap(list,2,3);---------------------------------- 1.swap(list,2,2); perm(list,3,3); 213 swap(list,2,2); swap(list,1,2); 2.swap(list,2,3); perm(list,2,3); perm(list,3,3); 231swap(list,1,2); swap(list,2,3);---------------------------------- 1.swap(list,2,2); perm(list,3,3); 321 swap(list,2,2); swap(list,1,3); 2.swap(list,2,3); perm(list,2,3); perm(list,3,3); 312swap(list,1,3); swap(list,2,3);----------------------------------
阅读全文
0 0
- 递归与分治策略-2.1.4全排列
- 全排列的递归实现--分治策略
- 分治与递归法:全排列问题
- 《算法之美》の递归与分治策略の全排列问题
- Java语言描述:递归与分治策略之全排列问题
- 分治与递归(一)----全排列问题
- 递归与分治策略
- 递归与分治策略
- 递归与分治策略
- 递归与分治策略
- 递归与分治策略
- 分治策略与递归
- 递归与分治策略
- 递归与分治策略
- 递归与分治策略
- 递归与分治策略
- 递归与分治策略
- 递归和分治策略之排列问题
- Redis介绍,安装,连接。
- 半路出家的菜鸟程序员的历程
- 【软考学习】设计模式——适配器模式
- 在Ubuntu系统下安装和配置Matlab R2016b
- java中的输入输出流(字节流 字符流 节点流 过滤流)
- 递归与分治策略-2.1.4全排列
- Spring tool Suite 安装配置+maven安装配置,搭建maven项目
- Prison Break
- python requests发送json格式数据
- 面试题: 问题与答案之JAVASE(不断更新中)
- 大数加法(考虑负数)
- Fragment切换重新或不重新加载界面
- .NET使用一般处理程序生成验证码!
- 作用域