package com.dong.harder; public class AllArrays { public static void main(String[] args) { // TODO Auto-generated method stub int n = 5; int[] Sured = new int[6]; printPermutation(5, Sured, 0); } //Sured中存放的是已经确定的序列,cur表示当前需要确定的元素的位置。 //由于一共是是n个元素,当cur为n时候,表示已经全部递归完成 public static void printPermutation(int n,int[] Sured,int cur){ if(cur == n){ for(int i = 0; i< n; i++){ System.out.print(Sured[i]); } System.out.println(); } //这里将选择一个Sured中不包含的元素,加入Sured,进入下一步递归 else{ for(int i =1; i<=n; i++){ int ok = 1; for(int j = 0; j < cur; j++){ if(Sured[j] == i){ ok = 0; } } if(ok == 1){ Sured[cur] = i; //找到Sured中不包含的那个元素,然后进行下一步递归,cur加1 printPermutation(n, Sured, cur+1); } } } } }
这里用递归实现。
在n为9时候,以1开头的全排列的特点是,第一位是1,后面是2-9的全排列,2-9接在进行全排列,这里就可以使用递归。
代码如下