淺談PHP的排列組合的範例程式碼分享

來源:互聯網
上載者:User
下面小編就為大家帶來一篇淺談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

執行個體如下:

<?php/*分治法——直接選擇比如說a b c首先將a之後的字元依次與a進行交換1 b,a,c2 c,b,a注意這裡少了一個未經處理資料 a,b,c。需要把未經處理資料也算如排列中3 a,b,c然後把字元移到第二個位置,將第二個位置之後的數分別與第二個位置的數進行交換1 b,a,c ===> 11 b,c,a2 c,b,a ===> 21 c,a,b3 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;  }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.