Java——n个数的全排列

例题:
输入一串字符串,将该字符串中的字符元素进行全排列,然后,一串输出结果。

例如:

输入:
ABCD

输出:
ABCD
ABDC
ACBD
ACDB
ADBC
ADCB
BACD
BADC
BCAD
BCDA
BDAC
BDCA
CABD
CADB
CBAD
CBDA
CDAB
CDBA
DABC
DACB
DBCA
DBAC
DCAB
DCBA

代码如下:

import java.util.Scanner;
public class pailie {
    public static void sq(char data[], int k) { 
        if (k == data.length) {
            for (int i = 0; i < data.length; i++) {
                System.out.print(data[i] + " ");
            }
            System.out.println();
        }

        for (int i = k; i < data.length; i++) { 
            {
                char temp = data[k]; 
                data[k] = data[i];
                data[i] = temp;
            }

            sq(data, k + 1);
            {
                char temp = data[k];
                data[k] = data[i];
                data[i] = temp;
            }
        }
}

    public static void main(String[] args) {
        String yy ;
        Scanner qq = new Scanner(System.in);
        yy = qq.next();
        char data[] = yy.toCharArray();
        sq(data, 0); 
    }
}

根据数学的递推方法:
当n=1时:A
有一种:A
1*1;
当n=2时:AB
有二种;AB、BA
2*1;
当n=3时:ABC
有六种:ABC、ACB、BAC、BCA、CAB、CBA
3*2*1
……
以此类推:
当n=n时:ABCDE……
有n*(n-1)(n-2)……*1种

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/81083268