package com.java.scgm.algorithms;
public class Perms
{
int p[];
public void init(int n){
//创建一个数组,用于保存排序的元素
p= new int [n];
for(int i=0;i<p.length;i++){
p[i] = 0;
//初始化为0,注意在perm中作用
}
}
public void Permutations(int n){
perm(n);
}
public void perm(int m){
if(m==0){
//m=o说明perm已被所有连续的值n-1,n-2,......,0调用。
for(int j=0;j<p.length;j++){
//在这种情况下,数组p[1...n]没有 //p[j]=0的项,并且包含一个
System.out.print(p[j]+" ");
//一个{1,2,......,n}的排列
}
System.out.println();
}
else{
//如果m>0,说明m+1,m+2,...,n已经 //被分配到数组p[1...n]
for(int k=0;k<p.length;k++){
//中的某些项。接下来的操作就是找到 //p[k]=0的项,并置
if(p[k]==0){
//p[k]=0,后用参数m-1递归调用过程 //perm.
p[k] =
m;
perm(m-1);
p[k] = 0;
//注意:递归调用后,要置p[k]=0,后 //面的调用才能使用它。
}
}
}
}
public static voidmain(String[]
args){
Perms pe
= new Perms();
pe.init(4);
pe.Permutations(4);
}
}
加载中,请稍候......