与组合型枚举算法不同的是,排列型枚举就好比是全排列,有n个数就排列n个数,只不过内部顺序不同而已(A(n,n))
相比较组合只关心有多少个集合,而排列是关心集合内的排列方式。
该算法也是有模板的,如下:
import java.util.Scanner; public class Main { static int n; static int[] v=new int[20]; static int[] num=new int[20]; public static void main(String[] args) { Scanner scanner=new Scanner(System.in); n=scanner.nextInt(); dfs(1); } public static void dfs(int u){ //u表示现在选取的数的个数 if(u>n){ for(int i=1;i<=n;i++){ System.out.print(num[i]+" "); } System.out.println(); return; } for(int i=1;i<=n;i++){ if(v[i]==0){ v[i]=1; num[u]=i; dfs(u+1); v[i]=-0; } } } }