Problem
Print all combination of a specified list items.
Solution
public class Combination{
public static void main(String[] arguments){
int[] list = {1, 2, 3, 4};
int[] preceding = {};
Combination.Comb(preceding, list);
}private static void Print(int[] list){
for(int i = 0;
i < list.length;
++i){
System.out.print(list[i] + " ");
}
System.out.println();
}private static void Copy(int[] destination, int[] source, int start){
for(int i = start;
i < source.length;
++i){
destination[i - start] = source[i];
}
}public static void Comb(int[] preceding, int[] list){
if(list.length == 0){
Print(preceding);
}else{
int[] newPreceding = new int[preceding.length + 1];
Copy(newPreceding, preceding, 0);
newPreceding[preceding.length] = list[0];
int[] newList = new int[list.length - 1];
Copy(newList, list, 1);
Comb(newPreceding, newList);
Comb(preceding, newList);
}
}
}
Output 【输出集合中所有数据项组合】
1 2 3 4
1 2 3
1 2 4
1 2
1 3 4
1 3
1 4
1
2 3 4
2 3
2 4
2
3 4
3
4
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)