输出集合中所有数据项组合

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



    推荐阅读