java 实现的用递归法实现全排列问题
来源:互联网 发布:火星潮牌淘宝 编辑:程序博客网 时间:2024/05/16 23:37
算法设计与分析 王晓东 感谢老师
Perm(list,k,m)
1.当 k == m,即元素已经全排列,那么输出打印即可。
2当 k+1 = m ,那么此时只有两个元素,输出两种排列情况:原数列,交换后的数列。
3.当 k+2 = m,那么此时有三个元素。设顺序确定为x1、x2、x3.
1) X1不变,对剩下的两个元素全排列,如2
2) 交换x1、x2,对剩下的两个元素全排列,如2
3)交换x1,x3,对剩下的两个元素全排列,如2
4.当 k+3 = m,那么此时有四个元素。设顺序确定为x1、x2、x3、x4
1) X1不变,对剩下的三个元素全排列,如3
2) 交换x1、x2,对剩下的三个元素全排列,如3
3)交换x1、x3,对剩下的三个元素全排列,如3
4) 交换x1、x4,对剩下的三个元素全排列,如3
以此类推,直到k==m。递归调用结束。
用图表示如下;
package com.wjl;public class Perm{static int count = 0;public void perm(int[] list, int k, int m){if(k == m){for(int i= 0; i<= m; i++){System.out.println(list[i]);}System.out.println("排列数:"+(++count));}else for(int i = k; i<= m; i++){System.out.println("before "+list[k]+" "+list[m]);MyMath.swap(list, k, i);System.out.println("after "+list[k]+" "+list[m]);perm(list,k+1,m);MyMath.swap(list, k,i);}}public static void main(String[] args){int[] list = new int[]{1,2,3,4};Perm p = new Perm();p.perm(list,0,3);}}
0 0
- java 实现的用递归法实现全排列问题
- 全排列问题的递归、STL实现
- 递归:全排列的java实现
- 全排列问题 递归实现
- 全排列问题递归实现
- 递归实现全排列问题
- 递归实现全排列问题
- java 全排列 递归实现
- java递归实现全排列
- java递归实现全排列
- Java递归实现全排列
- Java 递归实现全排列
- Java用递归实现的数组的全排列
- 用递归的方法实现全排列
- 用递归的方法实现全排列
- 全排列的递归实现
- 全排列的递归实现
- 全排列的递归实现
- EPop expired后怎么办
- SVN服务器的搭建和使用
- 在rails中使用FusionCharts生成报表
- 又是一个苦逼 的 change
- 强制类型转换
- java 实现的用递归法实现全排列问题
- CSS让图片垂直居中的几种技巧
- STL源码剖析(一) - 内存分配
- Android开发中的SQLite事务处理,即beginTransaction()方法
- LR(0)分析例子
- 面向对象和面向过程
- 【Qt 资讯资料】
- 【实战案例】微软网络犯罪防范中心:大数据抓出恶意攻击和盗版
- UVa 10177 - (2/3/4)-D Sqr/Rects/Cubes/Boxes?