php实现的生成排列算法示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-07 16:20:16 浏览: 评论:0
这篇文章主要介绍了php实现的生成排列算法,结合实例形式分析了php基于递归、遍历字符串实现全排列相关算法实现技巧,需要的朋友可以参考下。
本文实例讲述了php实现的生成排列算法,分享给大家供大家参考,具体如下:
- <?php
- function perm($s, $n, $index)
- {
- if($n == 0)
- {
- return '';
- }
- else
- {
- $nIndex = count($index); //可用的字符串下标
- $res = array();
- foreach($index as $i => $v)
- {
- $tmp = $index;
- unset($tmp[$i]); //去掉当前的前缀
- /* 调试信息,便于理解
- echo "len $n , cur $i , index:\n";
- var_dump($tmp);
- */
- $ret = perm($s, $n-1, $tmp); //递归得到稍短的排列
- if($ret != '')
- {
- foreach($ret as $r)
- {
- $res[] = $s[$v] . $r; //将稍短的排列逐个拼上当前的前缀
- }
- }
- else
- {
- $res[] = $s[$v];
- }
- }
- return $res;
- }
- }
- function getPerm($s)
- {
- $n = strlen($s);
- $index = range(0, $n-1);
- //得到不同长度的排列
- for($i=1; $i<=$n; $i++)
- {
- var_dump(perm($s, $i, $index));
- }
- }
- getPerm('abcd');
- ?>
运行结果:
- array(4) {
- [0]=>
- string(1) "a"
- [1]=>
- string(1) "b"
- [2]=>
- string(1) "c"
- [3]=>
- string(1) "d"
- }
- array(12) {
- [0]=>
- string(2) "ab"
- [1]=>
- string(2) "ac"
- [2]=>
- string(2) "ad"
- [3]=>
- string(2) "ba"
- [4]=>
- string(2) "bc"
- [5]=>
- string(2) "bd"
- [6]=>
- string(2) "ca"
- [7]=>
- string(2) "cb"
- [8]=>
- string(2) "cd"
- [9]=>
- string(2) "da"
- [10]=>
- string(2) "db"
- [11]=>
- string(2) "dc"
- }
- array(24) {
- [0]=>
- string(3) "abc"
- [1]=>
- string(3) "abd"
- [2]=>
- string(3) "acb"
- [3]=>
- string(3) "acd"
- [4]=>
- string(3) "adb"
- [5]=>
- string(3) "adc"
- [6]=>
- string(3) "bac"
- [7]=>
- string(3) "bad"
- [8]=>
- string(3) "bca"
- [9]=>
- string(3) "bcd"
- [10]=>
- string(3) "bda"
- [11]=>
- string(3) "bdc"
- [12]=>
- string(3) "cab"
- [13]=>
- string(3) "cad"
- [14]=>
- string(3) "cba"
- [15]=>
- string(3) "cbd"
- [16]=>
- string(3) "cda"
- [17]=>
- string(3) "cdb"
- [18]=>
- string(3) "dab"
- [19]=>
- string(3) "dac"
- [20]=>
- string(3) "dba"
- [21]=>
- string(3) "dbc"
- [22]=>
- string(3) "dca"
- [23]=>
- string(3) "dcb"
- }
- array(24) {
- [0]=>
- string(4) "abcd"
- [1]=>
- string(4) "abdc"
- [2]=>
- string(4) "acbd"
- [3]=>
- string(4) "acdb"
- [4]=>
- string(4) "adbc"
- [5]=>
- string(4) "adcb"
- [6]=>
- string(4) "bacd"
- [7]=>
- string(4) "badc"
- [8]=>
- string(4) "bcad"
- [9]=>
- string(4) "bcda"
- [10]=>
- string(4) "bdac"
- [11]=>
- string(4) "bdca"
- [12]=>
- string(4) "cabd"
- [13]=>
- string(4) "cadb"
- [14]=>
- string(4) "cbad"
- [15]=>
- string(4) "cbda"
- [16]=>
- string(4) "cdab"
- [17]=>
- string(4) "cdba"
- [18]=>
- string(4) "dabc"
- [19]=>
- string(4) "dacb"
- [20]=>
- string(4) "dbac"
- [21]=>
- string(4) "dbca"
- [22]=>
- string(4) "dcab"
- [23]=>
- string(4) "dcba"
- }
Tags: php生成排列算法
- 上一篇:PHP保留两位小数的几种方法
- 下一篇:PHP goto语句用法实例
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)