这里有新鲜出炉的 PHP 教程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
下面小编就为大家带来一篇浅谈 PHP 的排列组合 (如输入 a,b,c 输出他们的全部组合)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
实例如下:
- <?php
- /*分治法——直接选择
- 比如说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
- **/
- function zuhe($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 '</br>';
- }
- //循环将初始值与第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 '</br>';
- }
- 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),在现有的排列上在新增元素
- 重复执行以上步骤
- */
- function zuhe2($arr,$begin){
- if($begin==0) {
- print_r($arr);
- echo "</br>";
- //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 "</br>";
- zuhe2($arr,$begin +1);
- $t = $arr[$begin];
- $arr[$begin] = $arr[$i];
- $arr[$i] = $t;
- }
- }
以上这篇浅谈 PHP 的排列组合 (如输入 a,b,c 输出他们的全部组合) 就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ。
来源: http://www.phperz.com/article/17/0814/340376.html