问题描述
对于给定的集合 A{a1,a2,…,an}, 其中的 n 个元素互不相同,如何输出这 n 个元素的所有排列(全排列)。
源码
//不痛一下,你就记不住
import java.util.Scanner;
public class Perm{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextInt())
{
int n = scanner.nextInt();
int[] data = new int[n];
for(int i=0;i<n;i++)
{
data[i] = i +1;
}
Perm(data,0,data.length-1);
}
}
public static void swap(int[] data, int i, int j)
{
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
public static void Perm(int[] data, int begin, int end)
{
if(begin==end)
{
for(int i=0;i<=end;i++)
{
System.out.print(data[i]+" ");
}
System.out.println();
return;
}
else
{
for(int i=begin;i<=end;i++)
{
swap(data,begin,i);
Perm(data,begin+1,end);
swap(data,begin,i);
}
}
}
}