淺談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)
實(shí)例如下:
<?php /*分治法——直接選擇 比如說a b c 首先將a之后的字符依次與a進(jìn)行交換 1 b,a,c 2 c,b,a 注意這里少了一個原始數(shù)據(jù) a,b,c。需要把原始數(shù)據(jù)也算如排列中 3 a,b,c 然后把字符移到第二個位置,將第二個位置之后的數(shù)分別與第二個位置的數(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個值交換后進(jìn)行組合 for($i = $begin;$i < $N;$i++){ $t = $arr[$begin]; $arr[$begin] = $arr[$i]; $arr[$i] = $t; if($i!==$begin){//i==begin時的數(shù)已經(jīng)輸出過 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個元素開始,輸出初始序列,為組合的一個序列 當(dāng)在來一個元素時只需將該元素放在該元素之前的元素組的不同的位置即組成了不同的排列 如已有元素組為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時的排列上一次已產(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 輸出他們的全部組合)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
php中計算中文字符串長度、截取中文字符串的函數(shù)代碼
在做PHP開發(fā)的時候,由于我國的語言環(huán)境問題,所以我們常常需要對中文進(jìn)行處理。2011-08-08PHP計算數(shù)組中值的和與乘積的方法(array_sum與array_product函數(shù))
這篇文章主要介紹了PHP計算數(shù)組中值的和與乘積的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了array_sum與array_product函數(shù)的功能與使用方法,需要的朋友可以參考下2016-04-04解析php做推送服務(wù)端實(shí)現(xiàn)ios消息推送
本篇文章是對php做推送服務(wù)端實(shí)現(xiàn)ios消息推送的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07晉城吧對DiscuzX進(jìn)行的前端優(yōu)化要點(diǎn)
晉城吧的服務(wù)器在美國,延遲相對國內(nèi)略微要高一些,所以優(yōu)化就顯得非常重要。2010-09-09PHP IDE PHPStorm配置支持友好Laravel代碼提示方法
這篇文章主要介紹了PHP IDE PHPStorm配置支持友好Laravel代碼提示方法,重點(diǎn)配置已經(jīng)加紅提示,需要的朋友可以參考下2015-05-05PHP的cURL庫功能簡介 抓取網(wǎng)頁、POST數(shù)據(jù)及其他
本文介紹了PHP的cURL庫的幾個使用方法。cURL是一個功能強(qiáng)大的PHP庫,可以用于獲取網(wǎng)頁內(nèi)容,獲取網(wǎng)頁內(nèi)容以及取一個XML文件并把其導(dǎo)入數(shù)據(jù)庫等等。2011-04-04php做下載文件的實(shí)現(xiàn)代碼及文件名中亂碼解決方法
php做下載文件的實(shí)現(xiàn)代碼及文件名中亂碼解決方法,需要的朋友可以參考下。2011-02-02