当前位置:编程学习 > > 正文

php100种算法(php实现的生成排列算法示例)

时间:2022-01-15 01:42:17类别:编程学习

php100种算法

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

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • <?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"
    }

    希望本文所述对大家PHP程序设计有所帮助。

    原文链接:https://blog.csdn.net/zhaozhi406/article/details/8531944

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐