笛卡尔积 笛卡尔机 笛卡儿积(笛卡尔积)
首先,先简单解释一下笛卡尔积。
现在,我们有两个集合A和B。
A = {0,1} B = {2,3,4}
集合 A×B 和 B×A的结果集就可以分别表示为以下这种形式:
A×B = {(0,2),(1,2),(0,3),(1,3),(0,4),(1,4)};
B×A = {(2,0),(2,1),(3,0),(3,1),(4,0),(4,1)};
以上A×B和B×A的结果就可以叫做两个集合相乘的‘笛卡尔积’。
程序实现
public class Solution {public List<List<String>> descartes(List<List<String>> dimValue) {List<List<String>> res = new ArrayList<>();if (dimValue == null || dimValue.size() == 0)return res;backtrace(dimValue, 0, res, new ArrayList<>());return res;}/*** 递归回溯法求解** @param dimValue 原始数据集合* @param index 当前执行的集合索引* @param result 结果集合* @param curList 当前的单个结果集*/private void backtrace(List<List<String>> dimValue, int index,List<List<String>> result, List<String> curList) {if (curList.size() == dimValue.size())result.add(new ArrayList<>(curList));elsefor (int j = 0; j < dimValue.get(index).size(); j++) {curList.add(dimValue.get(index).get(j));backtrace(dimValue, index + 1, result, curList);curList.remove(curList.size() - 1);}}
测试方法
public static void main(String[] args) {List<String> list1 = new ArrayList<String>();list1.add("a");list1.add("b");List<String> list2 = new ArrayList<String>();list2.add("0");list2.add("1");list2.add("2");List<List<String>> dimValue = new ArrayList<List<String>>();dimValue.add(list1);dimValue.add(list2);// 递归实现笛卡尔积Solution s = new Solution();List<List<String>> res = s.descartes(dimValue);System.out.println("递归实现笛卡尔乘积: 共 " + res.size() + " 个结果");for (List<String> list : res) {for (String string : list) {System.out.print(string + " ");}System.out.println();}}
结果
递归实现笛卡尔乘积: 共 6 个结果
a 0
a 1
a 2
b 0
b 1
b 2
笛卡尔积 笛卡尔机 笛卡儿积(笛卡尔积)相关推荐
- python笛卡尔_Python 计算笛卡尔积
Python 计算笛卡尔积 计算多个集合的笛卡尔积,有规律可循,算法和代码也不难,但是很多语言都没有提供直接计算笛卡尔积的方法,需要自己写大段大段的代码计算笛卡尔积,python 提供了一种最简单的计 ...
- java 笛卡尔积_笛卡尔乘积-java代码
好久没摸过程序了,重新捡起java写了个笛卡尔乘积算法.自我感觉非常精简通用,这算是码力不减,码刀不老? package my.table; import java.util.Arrays; publ ...
- mysql 迪卡尔运算_「笛卡尔乘积」mysql笛卡儿积 - seo实验室
笛卡尔乘积 1.笛卡儿积数学理解 A={2,3} :B= {0,2,4} AxB = {(2,0),(3,0),(2,2),(3,2),(2,4),(3,4)},则AxB的结果集既是笛卡儿积: 但其不 ...
- 运算法则(笛卡尔乘积)
运算法则(笛卡尔乘积) 数学中,两个集合X和Y的笛卡儿积(Cartesian product),又称直积,表示为X × Y,是其第一个对象是X的成员而第二个对象是Y的一个成员的所有可能的有序对. 假设 ...
- 使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean>
需求分析: 有两个Long类型的集合 : List<Long> tagsIds; List<Long> attributesIds; 现在需要将这两个Long类型的集合进行组合 ...
- 克罗内克积(Kronecker product)与笛卡尔乘积(Cartesian product)
数学上,克罗内克积是两个任意大小的矩阵间的运算. 假设A为mxn的矩阵,B为pxq的矩阵. ,. 在进行计算的时候,克罗内克积可表示为,为mpxnq大小的矩阵.在MATLAB中可以使用kron函数. ...
- SQL中的笛卡尔你真的懂吗?
原文链接:https://www.cnblogs.com/CareySon/archive/2010/04/13/1711095.html 什么是笛卡尔积? 笛卡尔积是指在数学中,两个集合X和Y的笛卡 ...
- 【Python】求笛卡尔乘积
在数学中,两个集合X和Y的笛卡尓乘积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员.假设集合A={a,b},集合 ...
- python笛卡尔心脏线绘制_python 笛卡尔
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 具体代码如下:def cp_a(a): def _multi(b): retur ...
最新文章
- Python逻辑运算符 and ,or not 的理解
- App Tracking Transparency被拒解决
- 自动生成WebForm中对实体类的编辑页面
- 三菱d700变频器接线图_图解PLC与变频器通讯接线
- LeetCode 583. 两个字符串的删除操作(动态规划)
- MathType使用中的四个小技巧
- 开启3389常用终端命令
- 基础服务系列-Hyper-V 安装centos7
- java使用谷歌验证码google captcha
- java微信支付,企业微信号转账给个人
- 彼得·林奇的 PEG 估值策略
- Android Studio编译错误:Suggestion: use tools:overrideLibrary=xxx.xxx.xxx to force usage
- ESP8266_CH340G串口自动下载固件库原理
- Canvas箭头动画
- 多机器人编队人工势场法协同避障算法原理及实现
- 两种方式读取Json文件 数据
- java经典问题:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
- 验证码由字符转换图片
- VUE 百度离线地图的下载与使用
- 数字金字塔 (15 分)
热门文章
- Vue高仿网易云网页端源码
- 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项
- RGB转8色16色256色
- 用python来玩科学计算
- 回调函数,回调函数,回调函数,什么是回调函数
- 2021年Funcode游戏制作二等奖作品
- vb microsoft html object library,HTML对象库简介(Microsoft HTML Object Library - mshtml.tlb)...
- sketch八个高效的快捷方式(上)
- Java网络编程(四)—— ServerSocket(一)
- sublime text3 多窗口打开设置