笛卡尔积

笛卡尔积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X*Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}
实现思路
先计算第一个集合和第二个集合的笛卡尔积,把结果保存为一个新集合。
然后再用新集合与下一个集合计算笛卡尔积,依此循环直到与最后一个集合计算笛卡尔积。
例如有以下几个集合,需要计算笛卡尔积
<?php
$sets = array(
array('白色','黑色','红色'),
array('透气','防滑'),
array('37码','38码','39码'),
array('男款','女款')
);
?>
代码如下:
<?php
/**
* php 计算多个集合的笛卡尔积
* Date: 2017-01-10
* Author: fdipzone
* Ver: 1.0
*
* Func
* CartesianProduct 计算多个集合的笛卡尔积
*/
/**
* 计算多个集合的笛卡尔积
* @param Array $sets 集合数组
* @return Array
*/
function CartesianProduct($sets){
// 保存结果
$result = array();
// 循环遍历集合数据
for($i=0,$count=count($sets); $i<$count-1; $i++){
// 初始化
if($i==0){
$result = $sets[$i];
}
// 保存临时数据
$tmp = array();
// 结果与下一个集合计算笛卡尔积
foreach($result as $res){
foreach($sets[$i+1] as $set){
$tmp[] = $res.$set;
}
}
// 将笛卡尔积写入结果
$result = $tmp;
}
return $result;
}
// 定义集合
$sets = array(
array('白色','黑色','红色'),
array('透气','防滑'),
array('37码','38码','39码'),
array('男款','女款')
);
$result = CartesianProduct($sets);
print_r($result);
?>
输出:
Array ( [0] => 白色透气37码男款 [1] => 白色透气37码女款 [2] => 白色透气38码男款 [3] => 白色透气38码女款 [4] => 白色透气39码男款 [5] => 白色透气39码女款 [6] => 白色防滑37码男款 [7] => 白色防滑37码女款 [8] => 白色防滑38码男款 [9] => 白色防滑38码女款 [10] => 白色防滑39码男款 [11] => 白色防滑39码女款 [12] => 黑色透气37码男款 [13] => 黑色透气37码女款 [14] => 黑色透气38码男款 [15] => 黑色透气38码女款 [16] => 黑色透气39码男款 [17] => 黑色透气39码女款 [18] => 黑色防滑37码男款 [19] => 黑色防滑37码女款 [20] => 黑色防滑38码男款 [21] => 黑色防滑38码女款 [22] => 黑色防滑39码男款 [23] => 黑色防滑39码女款 [24] => 红色透气37码男款 [25] => 红色透气37码女款 [26] => 红色透气38码男款 [27] => 红色透气38码女款 [28] => 红色透气39码男款 [29] => 红色透气39码女款 [30] => 红色防滑37码男款 [31] => 红色防滑37码女款 [32] => 红色防滑38码男款 [33] => 红色防滑38码女款 [34] => 红色防滑39码男款 [35] => 红色防滑39码女款 )
总结
以上就是利用php实现计算多个集合的笛卡尔积的全部内容了,希望本文的内容对大家学习或者使用PHP能带来一定的帮助,如果有疑问大家可以留言交流。
# php
# 笛卡尔积
# 集合
# 集合笛卡尔积
# PHP实现笛卡尔积算法的实例讲解
# PHP笛卡尔积实现算法示例
# PHP实现数组的笛卡尔积运算示例
# PHP基于自定义函数生成笛卡尔积的方法示例
# PHP基于进程控制函数实现多线程
# PHP如何防止用户重复提交表单
# Nginx+php配置文件及原理解析
# thinkphp诸多限制条件下如何getshell详解
# PHP笛卡尔积实现原理及代码实例
# 笛卡尔
# 多个
# 第一个
# 第二个
# 几个
# 是指
# 遍历
# 其中一个
# 再用
# 保存为
# 依此
# 学中
# 有疑问
# gt
# Func
# Date
# Author
# Ver
# fdipzone
# array
相关文章:
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
如何将凡科建站内容保存为本地文件?
定制建站哪家更专业可靠?推荐榜单揭晓
如何通过西部建站助手安装IIS服务器?
专业公司网站制作公司,用什么语言做企业网站比较好?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
建站之星备案是否影响网站上线时间?
孙琪峥织梦建站教程如何优化数据库安全?
建站之星客服服务时间及联系方式如何?
如何在阿里云虚拟服务器快速搭建网站?
外贸公司网站制作哪家好,maersk船公司官网?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
微信小程序 五星评分(包括半颗星评分)实例代码
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
长沙企业网站制作哪家好,长沙水业集团官方网站?
简单实现Android验证码
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
建站之星如何优化SEO以实现高效排名?
网站制作说明怎么写,简述网页设计的流程并说明原因?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
太平洋网站制作公司,网络用语太平洋是什么意思?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何使用Golang table-driven基准测试_多组数据测量函数效率
建站之星价格显示格式升级,你的预算足够吗?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
制作国外网站的软件,国外有哪些比较优质的网站推荐?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
威客平台建站流程解析:高效搭建教程与设计优化方案
电商平台网站制作流程,电商网站如何制作?
建站之星3.0如何解决常见操作问题?
家具网站制作软件,家具厂怎么跑业务?
简单实现Android文件上传
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
表情包在线制作网站免费,表情包怎么弄?
建站之星如何实现网站加密操作?
定制建站方案优化指南:企业官网开发与建站费用解析
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何在宝塔面板中修改默认建站目录?
定制建站是什么?如何实现个性化需求?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
建站之星如何快速解决建站难题?
建站主机类型有哪些?如何正确选型
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
*请认真填写需求信息,我们会在24小时内与您取得联系。