public class Script {
/*
思路:
递归求 1 2 3 4 5 的全排列
就是求 1,2,3,4,5的全排列,要将2,3,4,5作为第一个就需要一个交换函数,
*/
static int count = 0;
public static void main(String[] args) {
char[] arr = new char[]{'a', 'b', 'c', 'd', 'e'};
perm(arr,0,arr.length - 1);
System.out.println(count);
}
/**
* 交换p,q的位置
* @param arr 原数组
* @param p
* @param q
*/
public static void swap(char[] arr, int p, int q) {
char ch = arr[p];
arr[p] = arr[q];
arr[q] = ch;
}
public static void perm(char[] arr, int p, int q) {
if (p == q) {
count++;
for (int i = 0; i <= q; i++) {
System.out.print(arr[i]);
}
System.out.println();
} else {
for (int i = p; i <= q; i++) {
swap(arr, p, i);
perm(arr, p + 1, q); // 将p作为第一个之后,求它之后第一个到最后一个人的全排列
swap(arr, p, i);
}
}
}
}
全排列--Java
最新推荐文章于 2022-03-16 22:21:52 发布