<?php
//1.0 用数组模拟一个非空集合
$arr = array(1,2,3);
$arr = array_unique($arr);
//2.0 求出这个集合的子集,并将子集存放至数组
$n = count($arr);
$sub_n = pow(2,$n);
$sub_array = array();
for($i=0; $i<$sub_n; $i++){
$m = sprintf('%0+'.$n.'b',$i);
$t_arr = array();
for($j=0;$j<$n;$j++)
if($m{$j}==1 && $j!=$n) $t_arr[] = $arr[$j];
$sub_array[] = '{'.implode(',', $t_arr).'}';
}
//3.0输出
var_dump($sub_array);
直接遍历递归:
<?php
function set($part='',$s=0)
{
$arr= array(1,2,3);
echo '{'.trim($part,',').'}<br>';
for($start=$s;$start<count($arr);$start++)
{
set($part.','.$arr[$start],$start+1);
}
}
set();参考网站:http://my.oschina.net/liuhui1990/blog/40422
本文介绍了一种使用PHP语言来生成一个给定数组所有可能子集的方法。通过两种不同的实现方式,一种是利用位运算结合循环,另一种是采用递归方式,详细展示了如何有效地生成这些子集,并将结果以数组形式输出。
13

被折叠的 条评论
为什么被折叠?



