zoukankan      html  css  js  c++  java
  • 多个数组间元素排列组合

    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 多个数组间元素排列组合问题求解
     * 非递归计算所有组合
     * <a>https://blog.csdn.net/tyhj_sf/article/details/53893125</a>
     */
    public class CalculateCombinationTest {
        public static void calculateCombination(List<List<String>> inputList) {
            List<Integer> combination = new ArrayList<Integer>();
            int n=inputList.size();
            for (int i = 0; i < n; i++) {
                combination.add(0);
            }
            int i=0;
            boolean isContinue=false;
            do{
                //打印一次循环生成的组合
                for (int j = 0; j < n; j++) {
                    System.out.print(inputList.get(j).get(combination.get(j))+", ");
                }
                System.out.println();
    
                i++;
                combination.set(n-1, i);
                for (int j = n-1; j >= 0; j--) {
                    if (combination.get(j)>=inputList.get(j).size()) {
                        combination.set(j, 0);
                        i=0;
                        if (j-1>=0) {
                            combination.set(j-1, combination.get(j-1)+1);
                        }
                    }
                }
                isContinue=false;
                for (Integer integer : combination) {
                    if (integer != 0) {
                        isContinue=true;
                    }
                }
            }while (isContinue);
        }
    
        public static void main(String[] args) {
            List<String> list1 = new ArrayList<>();
            list1.add("0");
            list1.add("1");
            list1.add("2");
            List<String> list2 = new ArrayList<>();
            list2.add("a");
            list2.add("b");
            list2.add("c");
            List<String> list3 = new ArrayList<>();
            list3.add("@");
            list3.add("#");
            list3.add("$");
            List<List<String>> allList = new ArrayList<>();
            allList.add(list1);
            allList.add(list2);
            allList.add(list3);
            calculateCombination(allList);
        }
    }
    
    
  • 相关阅读:
    dubbox编译
    fastdfs的启动停止
    fastDFS单机
    Dsu on tree算法
    The 2017 ACM-ICPC Asia Beijing Regional Contest(重现赛)
    2019南京ICPC(重现赛) F
    Codeforces Round #634 (Div. 3)
    Codeforces Round #632 (Div. 2)
    HDU 6521 Party(线段树)
    牛客小白月赛20
  • 原文地址:https://www.cnblogs.com/fly-book/p/14047616.html
Copyright © 2011-2022 走看看