笛卡尔乘积
1.两个集合,组成新的集合.
处理的思想:
1.从一个集合中,取出一个元素. 这个元素与另外的一个集合做一次组合.组成新的集合.
第一个集合遍历完成,则组合完成.
即记第一个集合的长度是M ,另一个集合的长度是N.
则需要遍历的次数是M*N .
因为集合1中的每一个元素,都需要遍历N次.
而笛卡尔乘积亦是M*N
2.多个集合,组成的笛卡尔乘积.
这里有两种思路:
第一种是采用递归.
第二种是采用循环.
原理上来说,我的解决思路是多个集合的笛卡尔乘积拆分成2个笛卡尔乘积的运算.
每次都是当前的集合与下一个集合做2个迪卡而乘积运算
.
递归的写法是写一个处理2个集合的方法,然后有条件的递归调用.递归写起来比较简单.
循环的思想,可以考虑采用栈.
使用场景
笛卡尔乘积使用场景还是很多的,例如组合排列.商品sku.等等
示例代码:
1 | /** |