最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
时间:2022-06-24 14:46:04 编辑:袖梨 来源:一聚教程网
代码如下 | 复制代码 |
/*分治法――直接选择 比如说a b c 首先将a之后的字符依次与a进行交换 1 b,a,c 2 c,b,a 注意这里少了一个原始数据 a,b,c。需要把原始数据也算如排列中 3 a,b,c
然后把字符移到第二个位置,将第二个位置之后的数分别与第二个位置的数进行交换 1 b,a,c ===> 11 b,c,a 2 c,b,a ===> 21 c,a,b 3 a,b,c ===> 31 a,c,b
**/ functionzuhe($arr,$begin){ if(!is_array($arr))return; $N=count($arr); if($begin==$N-1 ||$begin>$N||$begin<0)return; if($begin== 0){ print_r($arr);//输出原始数据 echo'' } //循环将初始值与第i个值交换后进行组合 for($i=$begin;$i<$N;$i++){
$t=$arr[$begin]; $arr[$begin] =$arr[$i]; $arr[$i] =$t;
if($i!==$begin){//i==begin时的数已经输出过 print_r($arr); echo'' } zuhe($arr,$begin+1); $t=$arr[$begin]; $arr[$begin] =$arr[$i]; $arr[$i] =$t;
} }
$arr=array('a','b','c','d'); //zuhe($arr,0);
/*分治法――直接插入 初始时从0个元素开始,输出初始序列,为组合的一个序列 当在来一个元素时只需将该元素放在该元素之前的元素组的不同的位置即组成了不同的排列 如已有元素组为a,b.新元素为c,把c分别与a,b进行交换即可(a,c,b);(c,b,a),在现有的排列上在新增元素 重复执行以上步骤 */ functionzuhe2($arr,$begin){ if($begin==0) { print_r($arr); echo""; //zuhe2($arr,$begin+1); } if($begin>=count($arr))return; zuhe2($arr,$begin+1);//begin时的排列上一次已产生,直接新增元素 for($i=$begin-1;$i>=0;$i--){ $t=$arr[$begin]; $arr[$begin] =$arr[$i]; $arr[$i] =$t; print_r($arr); echo""; zuhe2($arr,$begin+1); $t=$arr[$begin]; $arr[$begin] =$arr[$i]; $arr[$i] =$t; } } |
相关文章
- 光遇12.26免费魔法有什么 12-26
- 江南百景图碎金泉怎么样 12-26
- 江南百景图游宴廊怎么样 江南百景图游宴廊建筑介绍 12-26
- 江南百景图碎金泉怎么样 江南百景图碎金泉建筑介绍 12-26
- 炉石传说兑换码大全 12-26
- 重返未来1999趋光性研究夜幕之外怎么玩 趋光性夜幕之外活动介绍 12-26