淺談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)
更新時(shí)間:2017年03月14日 08:58:28 投稿:jingxian
下面小編就為大家?guī)硪黄獪\談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
實(shí)例如下:
<?php
/*分治法——直接選擇
比如說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)輸出過
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)在來一個(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 輸出他們的全部組合)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP API接口必備之輸出json格式數(shù)據(jù)示例代碼
這篇文章主要給大家介紹了關(guān)于PHP API接口必備之輸出json格式數(shù)據(jù)的相關(guān)資料文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06
PHP設(shè)計(jì)模式之工廠模式(Factory Pattern)的講解
今天小編就為大家分享一篇關(guān)于PHP設(shè)計(jì)模式之工廠模式(Factory Pattern)的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
php str_replace替換指定次數(shù)的方法詳解
本篇文章主要介紹了php str_replace替換指定次數(shù)的方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-05-05
json的鍵名為數(shù)字時(shí)的調(diào)用方式(示例代碼)
json的鍵名為數(shù)字時(shí)的調(diào)用方式(示例代碼)。需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11
php面向?qū)ο?一) 初窺(php面向?qū)ο蠡A(chǔ)介紹)
這篇文章主要介紹了php面向?qū)ο蟮囊恍┲R,需要的朋友可以參考下2017-08-08
php自動注冊登錄驗(yàn)證機(jī)制實(shí)現(xiàn)代碼
在phpwind站點(diǎn)后臺添加一個(gè)名為“廣告管家”(廣告管家為CNZZ的一款廣告投放的應(yīng)用)的應(yīng)用,整個(gè)“廣告管家”的應(yīng)用是通過iframe載入,載入的具體內(nèi)容根據(jù)不同站點(diǎn)顯示針對該站點(diǎn)的具體內(nèi)容2011-12-12

