你好,欢迎访问远方教程PC版!
广告位招租
网站首页 >> PHP教程 >> 常用PHP函数 >> 文章内容

常用php函数[10]:排列函数

[日期:2015-06-30]   来源:远方教程  作者:远方教程   阅读:2616次[字体: ] 访问[旧版]
 捐赠远方教程 

        这个只是基础算法, 如果要实际应用, 输出部分要改成保存到数组中。

排列函数定义

  1.        <?php
  2.        function permute($pos){
  3.          global $n ,$r , $used , $p  ;
  4.        /*如果已是第r个元素了,则可打印r个元素的排列 */
  5.        //如果要实际应用,这里要保存到数组中。
  6.            if ($pos==$r) {
  7.                for ($i=0; $i<$r; $i++)
  8.                    echo $p[$i]+1;
  9.                echo "<br>";
  10.             return;
  11.         }
  12.         for ($i=0; $i<$n; $i++)
  13.             if ($used[$i]==0) { /*如果第i个元素未用过*/
  14.     /*使用第i个元素,作上已用标记,目的是使以后该元素不可用*/
  15.                 $used[$i]++;
  16.     /*保存当前搜索到的第i个元素*/
  17.                 $p[$pos] = $i;
  18.     /*递归搜索*/
  19.               permute($pos+1);
  20.     /*恢复递归前的值,目的是使以后改元素可用*/
  21.     $used[$i]--;
  22.             }
  23.     }
  24.     ?>

使用部分:

  1.        <?php
  2.        $n = $_POST['n'] ;
  3.        $r = $_POST['r'] ;
  4.        if($n>=$r){
  5.            $used = array();
  6.            $p=array();
  7.            for($i=1;$i<=$n;$i++){
  8.                $used[$i]=0;
  9.            }
  10.         permute(0);
  11.     }
  12. 12
  13.     ?>

组登算法:

  1.        <?php
  2.            function luck($start,$loop,$footnote,$choice){
  3.                global $arr;
  4.                for($i=$start;$i<=$loop;$i++){
  5.                    $arr[$footnote]=$i;
  6.                    if (count($arr)==$choice){
  7.                        print_r($arr);
  8.                        array_pop($arr);
  9.                        echo "<br />";
  10.                     continue;
  11.                 }
  12.                 luck($i+1,$loop+1,$footnote+1,$choice);
  13.             }
  14.         }
  15.         $arr=array();
  16.         $start=1;
  17.         $end=7;
  18.         $choice=3;
  19.         $loop=$end-$choice+1;
  20.         $footnote=0;
  21.         luck($start,$loop,$footnote,$choice);
  22.     ?>
图片展示
 
相关评论
站长推荐