输入:先输入要求输入的字符的个数,后依次输入(或随机生成)每个字符(不能仅仅是数字)。
输出:全排列的结果。
示例:输入:3 / * 2,输出:/ * 2 / 2 * * / 2 * 2 / 2 * / 2 / *
import java.util.Scanner;
public class Permutation {
private static void swap(String arr[], int a, int b) {
String temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
static void perm(String arr[], int left, int right) {
if (left == right) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" "); //这里是一组数值,不需要换行
}
} else {
for (int j = left; j<= right; j++) {
swap(arr, left, j); // 开始时j=left,第一次不交换(前缀)
perm(arr, left + 1, right); // 每一轮的结果
swap(arr, left, j); // 恢复开始的顺序
}
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
String[] arr=new String[n];
for (int i = 0; i < arr.length; i++) {
arr[i]=s.next(); //s.next为字符串输入
}
perm(arr,0,arr.length-1);
}
}
本文介绍了一个简单的字符全排列算法实现,通过递归调用完成所有可能的排列组合,并提供了Java代码示例。输入一组字符(不含纯数字),输出所有可能的排列结果。
3061

被折叠的 条评论
为什么被折叠?



