package com.example.utils;
import java.util.ArrayList;
import java.util.List;
public class ArrayHelper {
private static int count = 0;
public static void main(String[] args) {
List<String> list = new ArrayList<>();
permutation(new char[] { 'A', 'B', 'C' }, 0, list);
System.out.println(list);
System.out.println(count + "次");
}
/**
*
* 改进的版本,将最后的结果放入到list中
*
* 结果加入count的测试 源代码的 continue部分根本没有执行到
*
* @param arr
* @param index
* @param list
*/
private static void permutation(char[] arr, int index, List<String> list) {
int size = arr.length;
if (index == size) {
StringBuffer sb = null;
for (int i = 0; i < arr.length; i++) {
sb = sb == null ? new StringBuffer() : sb;
sb.append(arr[i]);
}
list.add(sb.toString());
sb = null;
} else {
for (int i = index; i < size; i++) {
count++;
swap(arr, i, index);
permutation(arr, index + 1, list);
swap(arr, i, index);
}
}
}
static void swap(char[] arr, int idx1, int idx2) {
char temp = arr[idx1];
arr[idx1] = arr[idx2];
arr[idx2] = temp;
}
static void permutation(char[] arr, int index, int size) {
if (index == size) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
} else {
for (int i = index; i < size; i++) {
if (i != index && arr[i] == arr[index]) {
continue;
}
swap(arr, i, index);
permutation(arr, index + 1, size);
swap(arr, i, index);
}
}
}
}
递归求组合
最新推荐文章于 2022-04-10 16:22:47 发布