淺談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)
更新時間:2017年03月14日 08:58:28 投稿:jingxian
下面小編就為大家?guī)硪黄獪\談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
實例如下:
<?php
/*分治法——直接選擇
比如說a b c
首先將a之后的字符依次與a進行交換
1 b,a,c
2 c,b,a
注意這里少了一個原始數(shù)據(jù) a,b,c。需要把原始數(shù)據(jù)也算如排列中
3 a,b,c
然后把字符移到第二個位置,將第二個位置之后的數(shù)分別與第二個位置的數(shù)進行交換
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個值交換后進行組合
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個元素開始,輸出初始序列,為組合的一個序列
當在來一個元素時只需將該元素放在該元素之前的元素組的不同的位置即組成了不同的排列
如已有元素組為a,b.新元素為c,把c分別與a,b進行交換即可(a,c,b);(c,b,a),在現(xiàn)有的排列上在新增元素
重復執(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 API接口必備之輸出json格式數(shù)據(jù)示例代碼
這篇文章主要給大家介紹了關(guān)于PHP API接口必備之輸出json格式數(shù)據(jù)的相關(guān)資料文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-06-06
PHP設(shè)計模式之工廠模式(Factory Pattern)的講解
今天小編就為大家分享一篇關(guān)于PHP設(shè)計模式之工廠模式(Factory Pattern)的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
php str_replace替換指定次數(shù)的方法詳解
本篇文章主要介紹了php str_replace替換指定次數(shù)的方法,具有很好的參考價值。下面跟著小編一起來看下吧2017-05-05
json的鍵名為數(shù)字時的調(diào)用方式(示例代碼)
json的鍵名為數(shù)字時的調(diào)用方式(示例代碼)。需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11
php面向?qū)ο?一) 初窺(php面向?qū)ο蠡A(chǔ)介紹)
這篇文章主要介紹了php面向?qū)ο蟮囊恍┲R,需要的朋友可以參考下2017-08-08

