《PHP學(xué)習(xí):淺談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)》要點(diǎn):
本文介紹了PHP學(xué)習(xí):淺談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合),希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
實(shí)例如下:PHP應(yīng)用
<?php /*分治法――直接選擇 比如說(shuō)a b c 首先將a之后的字符依次與a進(jìn)行交換 1 b,a,c 2 c,b,a 注意這里少了一個(gè)原始數(shù)據(jù) a,b,c.需要把原始數(shù)據(jù)也算如排列中 3 a,b,c 然后把字符移到第二個(gè)位置,將第二個(gè)位置之后的數(shù)分別與第二個(gè)位置的數(shù)進(jìn)行交換 1 b,a,c ===> 11 b,c,a 2 c,b,a ===> 21 c,a,b 3 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);//輸出原始數(shù)據(jù) echo '</br>'; } //循環(huán)將初始值與第i個(gè)值交換后進(jìn)行組合 for($i = $begin;$i < $N;$i++){ $t = $arr[$begin]; $arr[$begin] = $arr[$i]; $arr[$i] = $t; if($i!==$begin){//i==begin時(shí)的數(shù)已經(jīng)輸出過(guò) 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); /*分治法――直接插入 初始時(shí)從0個(gè)元素開始,輸出初始序列,為組合的一個(gè)序列 當(dāng)在來(lái)一個(gè)元素時(shí)只需將該元素放在該元素之前的元素組的不同的位置即組成了不同的排列 如已有元素組為a,b.新元素為c,把c分別與a,b進(jìn)行交換即可(a,c,b);(c,b,a),在現(xiàn)有的排列上在新增元素 重復(fù)執(zhí)行以上步驟 */ 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時(shí)的排列上一次已產(chǎn)生,直接新增元素 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; } }
以上這篇淺談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持維易PHP.PHP應(yīng)用
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/1478.html