笛卡尔积算法的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;}}}