問題描述:
一組字符串的全排列,按照全排列的順序輸出,
並且每行結尾無空格。
輸入:
輸入一個字符串
輸入示例:
請輸入全排列的字符串:
abc
輸出示例:
a b c
a c b
b a c
b c a
c b a
c a b
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s1 = scanner.nextLine(); // 輸入字符串
char[] num = s1.toCharArray(); // 轉換字符數組
Full_Permutation(num, 0); // 調用方法
}
public static void Full_Permutation(char arr[], int n) { // 確認某個排列的第k位
if (n == arr.length) { // 全部確認
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " "); // 輸出
}
System.out.println(); // 換行
}
for (int i = n; i < arr.length; i++) { // 選定第k位
char temp = arr[i]; // 將第i位和第k位交換
arr[i] = arr[n];
arr[n] = temp;
Full_Permutation(arr, n + 1); // 移交下一層確認k+1位
temp = arr[i]; // 回溯
arr[i] = arr[n];
arr[n] = temp;
}
}
}