笛卡尔积算法的Java实现
2016-01-19 09:29
513 查看
(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行:
aa1 bb1 cc1
aa1 bb1 cc2
aa1 bb1 cc3
aa1 bb1 cc4
aa1 bb2 cc1
aa1 bb2 cc2
aa1 bb2 cc3
aa1 bb2 cc4
aa1 bb3 cc1
aa1 bb3 cc2
aa1 bb3 cc3
aa1 bb3 cc4
aa2 bb1 cc1
aa2 bb1 cc2
aa2 bb1 cc3
aa2 bb1 cc4
aa2 bb2 cc1
aa2 bb2 cc2
aa2 bb2 cc3
aa2 bb2 cc4
aa2 bb3 cc1
aa2 bb3 cc2
aa2 bb3 cc3
aa2 bb3 cc4
相关文章推荐
- eclipse启动报错"failed to create the java virtual machine"
- 常用加密算法的Java实现总结
- Java 构造方法,初始化块,静态初始化块
- myeclipse 2013 SR2 安装svn
- Java 集合:Collection 系列(HashSet)
- 使用Maven运行Java main的3种方式
- 如何将eclipse项目导入android studio中
- 在java项目中通过相对路径获取资源的方式
- java遍历读取xml文件内容
- JavaScrip——简单练习(抓错误信息,for循环,日期)
- 原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:schema>
- 应用 EditPlus 配置 Java 编译环境
- Eclipse选中变量名,相同变量都变色显示 的设置
- eclipse adt jni
- Java 多态特点
- Java多线程循环打印ABC 10次,可能是东半球最美解决方案了
- Java排序 Collections排序
- 循序渐进看Java web日志跟踪(3)-Log4J的使用和配置
- 学习java的道路
- Think in java浏览一