public class Test {
public static char[] text = { 'a', 'c', 'c', 'd' };
public static void main(String[] args) {
permutation(text, 0, text.length);
System.exit(0);
}
/**
* 全排列输出
*
* @param a
* [] 要输出的字符数组
* @param m
* 输出字符数组的起始位置
* @param n
* 输出字符数组的长度
*/
public static void permutation(char a[], int m, int n) {
if (m < n - 1) {
permutation(a, m + 1, n); // 从第2个元素开始全排列
// 以后从第2个元素开始与第一个元素交换,再从第2个元素开始全排列
// 最后还原序列,进行循环
char t;
for (int i = m + 1; i < n; i++) {
if (a[m] != a[i]) {
t = a[m]; // 交换
a[m] = a[i];
a[i] = t;
permutation(a, m + 1, n);
t = a[m]; // 还原
a[m] = a[i];
a[i] = t;
}
}
} else {
printResult(a);
}
}
/**
* 输出指定字符数组
*/
public static void printResult(char[] text) {
for (int i = 0; i < text.length; i++) {
System.out.print(text[i]);
}
System.out.println();
}
}
java实现全排列问题(含相等元素)
最新推荐文章于 2024-07-28 19:46:20 发布