您的位置:首页 > 其它

全排列的递归实现算法

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;
}
}


运行结果:



动动小手,赞一下吧,

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归 算法 全排列