美文网首页
笛卡尔积简单实现

笛卡尔积简单实现

作者: Theodore的技术站 | 来源:发表于2018-11-30 16:56 被阅读12次

昨天去面试碰到的算法题,笛卡尔积,之前都没接触过。

笛卡尔乘积是指在数学中,两个[集合] XY的笛卡尓积(Cartesian product),又称[直积],表示为X* × Y,第一个对象是X的成员而第二个对象是Y的所有可能[有序对]的其中一个成员

例如,A={a,b}, B={0,1,2},则
A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}

java 代码:

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;  // 相当于进位 从最后一个数组开始 每次每一个数组循环之后 -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;  
        }  
    }  
  
}  

相关文章

  • 笛卡尔积简单实现

    昨天去面试碰到的算法题,笛卡尔积,之前都没接触过。 笛卡尔乘积是指在数学中,两个[集合] X和Y的笛卡尓积(Car...

  • iOS 求笛卡尔积写法

    求任意数组笛卡尔积 OC Swift 写法 求这三个数组的笛卡尔积 ,结果应该是 有27个。 具体实现: 结果: ...

  • Oracle入门笔记【3】多表查询与分组统计查询

    1,先实现多表查询: (可以发现两个集合发生了乘积,这叫笛卡尔积问题。) 消除笛卡尔积: (这只是消除了显示的笛卡...

  • JavaScript笛卡尔积超简单实现算法示例

    附: vue 添加商品规格时的实现

  • 笛卡尔积算法(PHP实现)

    第一、定义 笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示...

  • 在Power BI中生成笛卡尔积表

    在我们进行数据分析或数据处理中,有时会需要生成笛卡尔积表作为辅助计算用。笛卡尔积表简单理解就是两表相乘,下面的图片...

  • 三、连接查询

    内连接 1、笛卡尔积 语法 无条件筛选 有条件筛选 什么是笛卡尔积?笛卡尔积就是将A和B表中的行任意组合,得到一个...

  • 笛卡尔积

    笛卡尔积,是指集合A中元素与B中元素所有的两两组合。 如A=(a,b),B=(1,2),那么笛卡尔积为(a1,a2...

  • 笛卡尔积

    笛卡尔乘积:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积表示为...

  • 笛卡尔积

    之前写一个SKU的插件,用到了【笛卡尔积】,明白其原理,但是就是写不出来 看来功力尚浅,需要努力 后来借鉴了网上的...

网友评论

      本文标题:笛卡尔积简单实现

      本文链接:https://www.haomeiwen.com/subject/fswhcqtx.html