将多个不相同的元素进行全排列
代码如下:(这里以整形为例)
import java.util.Scanner;
public class 全排列算法 {
private static int count = 0;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.print("请输入要排列元素的个数:");
int n = sc.nextInt();
System.out.print("请输入相应的元素:");
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
//输入的元素不允许重复
arr[i] = sc.nextInt();
}
System.out.println("其所有的排列组合为:");
fun(arr, 0);
System.out.println("共有"+count+"种排列方法");
}
public static void fun(int[] arr, int k) {
if (k == arr.length) {
for (int i : arr) {
System.out.print(i);
}
System.out.println();
count++;
return;
} else {
int temp;
for (int i = k; i < arr.length; i++) {
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
fun(arr, k+1);
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}
}
运行结果:
请输入要排列元素的个数:3
请输入相应的元素:1 2 3
其所有的排列组合为:
123
132
213
231
321
312
共有6种排列方法