求笛卡尔积的php代码
来源:互联网 发布:淘宝达人2017还赚钱吗 编辑:程序博客网 时间:2024/05/19 13:14
笛卡尔(Descartes)乘积又叫直积。设A、B是任意两个集合,在集合A中任意取一个元素x,在集合B中任意取一个元素y,组成一个有序对(x,y),把这样的有序对作为新的元素,他们的全体组成的集合称为集合A和集合B的直积,记为A×B,即A×B={(x,y)|x∈A且y∈B}。
function Descartes() { $t = func_get_args(); if(func_num_args() == 1) return call_user_func_array( __FUNCTION__, $t[0] ); $a = array_shift($t); if(! is_array($a)) $a = array($a); $a = array_chunk($a, 1); do {$r = array();$b = array_shift($t);if(! is_array($b)) $b = array($b);foreach($a as $p)foreach(array_chunk($b, 1) as $q)$r[] = array_merge($p, $q);$a = $r; }while($t); return $r;}
示例
$arr = array( array(a1,a2,), b, array(c1,c2,), array(d1,d2,d3), //......省略其它元素(也可以是数组),); $r = Descartes( $arr );
结果
Array( [0] => Array ( [0] => a1 [1] => b [2] => c1 [3] => d1 ) [1] => Array ( [0] => a1 [1] => b [2] => c1 [3] => d2 ) [2] => Array ( [0] => a1 [1] => b [2] => c1 [3] => d3 ) [3] => Array ( [0] => a1 [1] => b [2] => c2 [3] => d1 ) [4] => Array ( [0] => a1 [1] => b [2] => c2 [3] => d2 ) [5] => Array ( [0] => a1 [1] => b [2] => c2 [3] => d3 ) [6] => Array ( [0] => a2 [1] => b [2] => c1 [3] => d1 ) [7] => Array ( [0] => a2 [1] => b [2] => c1 [3] => d2 ) [8] => Array ( [0] => a2 [1] => b [2] => c1 [3] => d3 ) [9] => Array ( [0] => a2 [1] => b [2] => c2 [3] => d1 ) [10] => Array ( [0] => a2 [1] => b [2] => c2 [3] => d2 ) [11] => Array ( [0] => a2 [1] => b [2] => c2 [3] => d3 ))
- 求笛卡尔积的php代码
- php 笛卡尔积的实现
- 求笛卡尔积
- Python求笛卡尔积
- php实现数组的笛卡尔积
- PHP好玩的代码一(笛卡尔的情书)
- 多数组求笛卡尔积
- 数据结构和算法数组系列---求数组的笛卡尔积
- c++求若干个集合的笛卡尔积
- php 计算多个集合的笛卡尔积
- php实现数组的笛卡尔积(张高伟)
- php 计算多个集合的笛卡尔积
- php 计算多个集合的笛卡尔积
- javascript 求json对象的笛卡尔乘积
- 排列组合 包含求集合笛卡尔积
- PHP自定义函数生成笛卡尔积
- 笛卡尔积的Java实现
- 不是笛卡尔积的问题
- 国外空间Access数据库排序错误的解决办法
- 如何去掉IE控件的垂直滚动条
- 一个比较全的VIM配置和tips网站
- 黑马程序员:高级for循环
- Android View添加Listener小技巧
- 求笛卡尔积的php代码
- ubuntu11.10下eclipse自动帮助提示框颜色修改
- META http-equiv 大全
- Bishop的一篇文章
- arcsde 直连方式输入参数
- protobuf 相关
- 从Google Scholar向EndNote导入会议文章的技巧
- Android 源码编译make的错误处理
- maven +jetty 配置web工程