笛卡尔积算法JAVA实现

笛卡尔积算法的Java实现: 

(1)循环内,每次只有一列向下移一个单元格,就是CounterIndex指向的那列。 
(2)如果该列到尾部了,则这列index重置为0,而CounterIndex则指向前一列,相当于进位,把前列的index加一。 
(3)最后,由生成的行数来控制退出循环。 

public class Test {

    private static String[] aa = { "aa1", "aa2" };
    private static String[] bb = { "bb1", "bb2", "bb3" };
    private static String[] cc = { "cc1", "cc2", "cc3", "cc4" };
    private static String[][] xyz = { aa, bb, cc };
    private static int counterIndex = xyz.length - 1;
    private static int[] counter = { 0, 0, 0 };

    public static void main(String[] args) throws Exception {

        for (int i = 0; i < aa.length * bb.length * cc.length; i++) {
            System.out.print(aa[counter[0]]);
            System.out.print("\t");
            System.out.print(bb[counter[1]]);
            System.out.print("\t");
            System.out.print(cc[counter[2]]);
            System.out.println();

            handle();
        }
    }

    public static void handle() {
        counter[counterIndex]++;
        if (counter[counterIndex] >= xyz[counterIndex].length) {
            counter[counterIndex] = 0;
            counterIndex--;
            if (counterIndex >= 0) {
                handle();
            }
            counterIndex = xyz.length - 1;
        }
    }

}

原文链接

posted @ 2018-01-04 18:55  图生  阅读(1616)  评论(0)    收藏  举报