全排列的递归实现算法
2017-04-22 17:52
417 查看
全排列的递归实现算法
输入:先输入要求输入的字符的个数,后依次输入(或随机生成)每个字符(不能仅仅是数字)。输出:全排列的结果。
R的全排列可归纳递归定义如下:
完整代码:
import java.awt.List; import java.util.Scanner; public class Permutation { public static void main(String args[]){ try { System.out.println("输入全排列的个数:"); Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); Object list[]=new Object ; System.out.println("依次输入全排列元素:"); for (int i=0;i<=list.length-1;i++) { String x=scanner.next(); list[i]=x; } System.out.println("全排列为:"); perm(list,0,n-1); } catch (Exception e) { } } public static void perm(Object[] list,int k,int m){ //一个元素直接输出 if (k==m) { for (int i=0;i<=m ;i++ ) { System.out.print(list[i]+" "); } System.out.print(" : "); }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 k,int m){ Object t=list[k]; list[k]=list[m]; list[m]=t; } }
运行结果:
动动小手,赞一下吧,
相关文章推荐
- 【算法】递归实现全排列
- 使用递归实现全排列的算法
- 算法——全排列递归实现
- 求模(非递归)全排列算法——Javascript实现
- 全排列(Perm)的递归实现算法
- 算法设计与分析 全排列的递归实现算法
- 全排列的递归实现
- 非递归实现不重复序列的全排列(二)
- 非递归实现不重复序列的全排列(一)
- 非递归实现不重复序列的全排列(三)
- 全排列的算法与C语言实现
- 0-1背包问题经典算法(递归实现)
- 非递归实现不重复序列的全排列(三)
- 区域增长算法递归实现
- 学习算法导论-插入查询(递归实现)
- 汇编语言实现递归阶乘算法代码分析(8)
- 非递归实现不重复序列的全排列(三)
- 递归调用实现的算法
- C++递归实现欧几里德(Euclid)算法
- 算法----汉诺塔的递归实现