首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

笛卡尔积算法的Java兑现

2012-08-22 
笛卡尔积算法的Java实现笛卡尔积算法的Java实现:(1)循环内,每次只有一列向下移一个单元格,就是CounterInde

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



输出共2*3*4=24行:
aa1bb1cc1
aa1bb1cc2
aa1bb1cc3
aa1bb1cc4
aa1bb2cc1
aa1bb2cc2
aa1bb2cc3
aa1bb2cc4
aa1bb3cc1
aa1bb3cc2
aa1bb3cc3
aa1bb3cc4
aa2bb1cc1
aa2bb1cc2
aa2bb1cc3
aa2bb1cc4
aa2bb2cc1
aa2bb2cc2
aa2bb2cc3
aa2bb2cc4
aa2bb3cc1
aa2bb3cc2
aa2bb3cc3
aa2bb3cc4



热点排行