Java 笛卡尔积
来源:互联网 发布:优化 英文 编辑:程序博客网 时间:2024/06/13 15:31
Java 实现集合 笛卡尔积 组合
import java.util.ArrayList;import java.util.List;/** * @author chen * @time:2015-1-31 下午05:17:08 */public class Descartes { public static void run(List<List<String>> dimvalue, List<String> result, int layer, String curstring) { // 大于一个集合时: if (layer < dimvalue.size() - 1) { // 大于一个集合时,第一个集合为空 if (dimvalue.get(layer).size() == 0) run(dimvalue, result, layer + 1, curstring); else { for (int i = 0; i < dimvalue.get(layer).size(); i++) { StringBuilder s1 = new StringBuilder(); s1.append(curstring); s1.append(dimvalue.get(layer).get(i)); run(dimvalue, result, layer + 1, s1.toString()); } } } // 只有一个集合时: else if (layer == dimvalue.size() - 1) { // 只有一个集合,且集合中没有元素 if (dimvalue.get(layer).size() == 0) result.add(curstring); // 只有一个集合,且集合中有元素时:其笛卡尔积就是这个集合元素本身 else { for (int i = 0; i < dimvalue.get(layer).size(); i++) { result.add(curstring + dimvalue.get(layer).get(i)); } } } } /** * * @param args */ public static void main(String[] args) { List<List<String>> dimvalue = new ArrayList<List<String>>(); List<String> v1 = new ArrayList<String>(); v1.add("a"); v1.add("b"); List<String> v2 = new ArrayList<String>(); v2.add("c"); v2.add("d"); v2.add("e"); List<String> v3 = new ArrayList<String>(); v3.add("f"); v3.add("g"); dimvalue.add(v1); dimvalue.add(v2); dimvalue.add(v3); List<String> result = new ArrayList<String>(); Descartes.run(dimvalue, result, 0, "#"); int i = 1; for (String s : result) { System.out.println(i++ + ":" + s); } }}
欢迎加群交流:JAVA开发交流 246844233
0 0
- java 笛卡尔积实现
- Java 笛卡尔积
- 笛卡尔积的Java实现
- java实现笛卡尔积算法
- 笛卡尔积算法的Java实现
- 笛卡尔积算法的Java实现
- 笛卡尔积算法的Java实现
- 笛卡尔积算法的Java实现
- Java中笛卡尔积的实现
- 笛卡尔积
- 笛卡尔积
- 笛卡尔积
- 笛卡尔积
- 笛卡尔积
- 笛卡尔积
- 笛卡尔积
- 笛卡尔积
- 笛卡尔积
- awk 查看ip连接数(常见应用一)
- 错
- 两个activity之间传值
- PS模块-PS项目管理理解第一篇
- Java IO流学习总结
- Java 笛卡尔积
- 缓存方案之Redis
- Android 异常问题分析
- vector 在循环中删除数据示例
- 在 Android 和 iOS 手机上模拟触屏点击的区别
- java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementatio
- dubbo 实例详解
- 分类回归树CART(最容易懂得文章)
- Android 相机开发 闪光灯,前后摄像头切换,调整缩放比例