求1到n,n个整数的全排列

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接在进行全排列,这里就可以使用递归。

代码如下

原文地址:https://www.cnblogs.com/dongqiSilent/p/3434392.html