笛卡尔积的Java实现

 
 

笛卡尔积的概念

 

设A、B为集合。用A中的元素x作为第一元素,B中的元素y作第二元素,构成有序对,所有这样的有序对组成的集合,叫做A
和B的笛卡尔积,记为A×B。 
例如,A={0,1,2},B={a,b}

A×B={<0,a>,<0,b>,<1,a>,<1,b>,<2,a>,<2,b>};

B×A={<a,0>,<a,1>,<a,2>,<b,0>,<b,1>,<b,2>}。

注意:对于有限集合可以进行多次笛卡尔积运算。
 
在本程序中,集合用一个ArrayList数据类型来表示,参数al0为参与笛卡尔积运算的A,B等集合的一个数组链表
注意:在实现过程中,出现了一个小错误,特列出来分析一下,当临时变量temp定义在第一个for循环之外时,则在计算所有
集合的笛卡尔积的过程中,temp变量始终存在,但是在每次计算完两个集合的笛卡尔积后,a0=temp的赋值运算,则使得
a0指向temp变量,这就导致在计算两个集合的笛卡尔积的两个for循环出现了死循环,即,由于a0和temp指向同一个对
象,当a0循环一次后,temp也发生变化,导致循环不止。由此问题需要注意:1,临时变量temp其生存期仅在仅在计算两个
笛卡尔积的集合时,记录运算结果期间,从计算开始到结束。2,java对象变量和普通变量的区别,即相当于在参数传递时的
地址传送还是值传送
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值