php實現(xiàn)的生成排列算法示例
本文實例講述了php實現(xiàn)的生成排列算法。分享給大家供大家參考,具體如下:
<?php function perm($s, $n, $index) { if($n == 0) { return ''; } else { $nIndex = count($index); //可用的字符串下標 $res = array(); foreach($index as $i => $v) { $tmp = $index; unset($tmp[$i]); //去掉當前的前綴 /* 調試信息,便于理解 echo "len $n , cur $i , index:\n"; var_dump($tmp); */ $ret = perm($s, $n-1, $tmp); //遞歸得到稍短的排列 if($ret != '') { foreach($ret as $r) { $res[] = $s[$v] . $r; //將稍短的排列逐個拼上當前的前綴 } } else { $res[] = $s[$v]; } } return $res; } } function getPerm($s) { $n = strlen($s); $index = range(0, $n-1); //得到不同長度的排列 for($i=1; $i<=$n; $i++) { var_dump(perm($s, $i, $index)); } } getPerm('abcd'); ?>
運行結果:
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
}
array(12) {
[0]=>
string(2) "ab"
[1]=>
string(2) "ac"
[2]=>
string(2) "ad"
[3]=>
string(2) "ba"
[4]=>
string(2) "bc"
[5]=>
string(2) "bd"
[6]=>
string(2) "ca"
[7]=>
string(2) "cb"
[8]=>
string(2) "cd"
[9]=>
string(2) "da"
[10]=>
string(2) "db"
[11]=>
string(2) "dc"
}
array(24) {
[0]=>
string(3) "abc"
[1]=>
string(3) "abd"
[2]=>
string(3) "acb"
[3]=>
string(3) "acd"
[4]=>
string(3) "adb"
[5]=>
string(3) "adc"
[6]=>
string(3) "bac"
[7]=>
string(3) "bad"
[8]=>
string(3) "bca"
[9]=>
string(3) "bcd"
[10]=>
string(3) "bda"
[11]=>
string(3) "bdc"
[12]=>
string(3) "cab"
[13]=>
string(3) "cad"
[14]=>
string(3) "cba"
[15]=>
string(3) "cbd"
[16]=>
string(3) "cda"
[17]=>
string(3) "cdb"
[18]=>
string(3) "dab"
[19]=>
string(3) "dac"
[20]=>
string(3) "dba"
[21]=>
string(3) "dbc"
[22]=>
string(3) "dca"
[23]=>
string(3) "dcb"
}
array(24) {
[0]=>
string(4) "abcd"
[1]=>
string(4) "abdc"
[2]=>
string(4) "acbd"
[3]=>
string(4) "acdb"
[4]=>
string(4) "adbc"
[5]=>
string(4) "adcb"
[6]=>
string(4) "bacd"
[7]=>
string(4) "badc"
[8]=>
string(4) "bcad"
[9]=>
string(4) "bcda"
[10]=>
string(4) "bdac"
[11]=>
string(4) "bdca"
[12]=>
string(4) "cabd"
[13]=>
string(4) "cadb"
[14]=>
string(4) "cbad"
[15]=>
string(4) "cbda"
[16]=>
string(4) "cdab"
[17]=>
string(4) "cdba"
[18]=>
string(4) "dabc"
[19]=>
string(4) "dacb"
[20]=>
string(4) "dbac"
[21]=>
string(4) "dbca"
[22]=>
string(4) "dcab"
[23]=>
string(4) "dcba"
}
更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》及《PHP數(shù)學運算技巧總結》
希望本文所述對大家PHP程序設計有所幫助。
相關文章
PHP實現(xiàn)根據(jù)數(shù)組某個鍵值大小進行排序的方法
這篇文章主要介紹了PHP實現(xiàn)根據(jù)數(shù)組某個鍵值大小進行排序的方法,涉及php針對數(shù)組的遍歷、排序等相關操作技巧,需要的朋友可以參考下2018-03-03php實現(xiàn)將HTML頁面轉換成word并且保存的方法
這篇文章主要介紹了php實現(xiàn)將HTML頁面轉換成word并且保存的方法,結合實例形式分析了PHPWord工具的功能與使用方法,具有一定參考借鑒價值,需要的朋友可以參考下2016-10-10PHP中include()與require()的區(qū)別說明
引用文件的方法有兩種:require 及 include。兩種方式提供不同的使用彈性。2010-03-03完美解決php 導出excle的.csv格式的數(shù)據(jù)時亂碼問題
下面小編就為大家?guī)硪黄昝澜鉀Qphp 導出excle的.csv格式的數(shù)據(jù)時亂碼問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02php將mysql數(shù)據(jù)庫整庫導出生成sql文件的具體實現(xiàn)
下面是php將mysql數(shù)據(jù)庫整庫導出生成sql文件的詳細代碼,希望對大家在用php編程時備份數(shù)據(jù)有一定幫助2014-01-01