前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php实现的生成排列算法示例

php实现的生成排列算法示例

作者头像
砸漏
发布2020-10-20 10:24:45
3960
发布2020-10-20 10:24:45
举报
文章被收录于专栏:恩蓝脚本

本文实例讲述了php实现的生成排列算法。分享给大家供大家参考,具体如下:

代码语言:javascript
复制
<?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” }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档