public class Script {
static List<List<Character>> lists = new ArrayList<>();
/*
求组合:1,2,3,4,5
*/
public static void main(String[] args) {
char[] arr = {'a', 'b', 'c', 'd', 'e'};
diaoYong(arr, 2);
System.out.println(lists);
System.out.println("一共有" + lists.size() + "方案数");
}
public static void diaoYong(char[] arr, int m) {
if (m == 1) {
for (int i = 0; i < arr.length; i++) {
List<Character> tmp = new ArrayList<>();
tmp.add(arr[i]);
lists.add(tmp);
}
} else {
for (int i = 0; i < arr.length; i++) {
List<Character> temp = new ArrayList<>();
temp.add(arr[i]);
comb(arr, m, temp, i + 1);
}
}
}
/**
* 求组合
* @param arr main函数中传下来的数组
* @param m 取几个
* @param temp 存储临时组合
* @param p 从下标为几开始
*/
public static void comb(char[] arr, int m, List<Character> temp, int p) {
if (m == temp.size()) {
List<Character> temp1 = new ArrayList<>();
for (int i = 0; i < temp.size(); i++) {
temp1.add(temp.get(i));
}
lists.add(temp1);
temp.remove(temp.size() - 1);
} else {
for (int i = p; i < arr.length; i++) {
temp.add(arr[i]);
comb(arr, m, temp, i + 1);
}
}
}
}
组合--Java
最新推荐文章于 2023-12-28 08:00:00 发布