算法-笛卡尔积

<?php
	function cartesianProduct ($arr)
    {
        // 保存结果
        $result = array();
        // 循环遍历集合数据
        for($i=0,$count=count($arr); $i<$count-1; $i++){
            // 初始化
            if($i==0){
                $result = $arr[$i];
            }
            // 保存临时数据
            $tmp = array();
            // 结果与下一个集合计算笛卡尔积
            foreach($result as $res){
                foreach($arr[$i+1] as $set){
                    $tmp[] = $res.'-'.$set;
                }
            }
            // 将笛卡尔积写入结果
            $result = $tmp;
        }
        return $result;
    }
	

$arr = [
	['红','黄','蓝','绿'],
	['大','中','小'],
	['男款','女款'],
];

$res = cartesianProduct($arr);

M先生博客
请先登录后发表评论
  • latest comments
  • 总共0条评论