ホームページ  >  記事  >  バックエンド開発  >  PHP 完全置換再帰アルゴリズム コード_PHP チュートリアル

PHP 完全置換再帰アルゴリズム コード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:15:42827ブラウズ

アルゴリズム原理

P が n 個の要素の完全な配置を表し、Pi が要素 i を含まない n 個の要素の完全な配置を表す場合、 (i) Pi は、配置 Pi の前に接頭辞 i を付けた配置を表し、要素の全体の配置は次のように再帰的に定義できます。
① n=1 の場合、配置 P には要素 i が 1 つだけあります。
② n>1 の場合、全体の配置 P は配置 (i)Pi で構成されます。
定義によれば、(k-1) 個の要素の順列 Pi が生成されている場合、各 Pi の前に要素 i を追加することで k 要素の順列を生成できることがわかります。
コードの実装

コードをコピー コードは次のとおりです:

function Rank($base, $temp=null)
{
$len = strlen($base);
if($len < = 1)
echo $temp.$base.'
(substr ($base, 0, $i).substr($base, $i+1, $len-$i-1), $ temp.$base[$i]);
123');


しかし、複数回テストを実行した結果、同じ要素がある場合、配置全体が繰り返されるという問題があることが判明しました。
たとえば、「122」の完全な配置には「122」、「212」、「221」の 3 つの状況しかありませんが、上記の方法が繰り返されます。
少し変更し、重複を判断するためのフラグを追加し、問題を解決しました (コードは次のとおりです):



コードをコピーします

コードは次のとおりです:


function fsRank($base, $temp=null )
{
static $ret = array();
$len = strlen($base); if($len { //echo $temp.$base.'

http://www.bkjia.com/PHPjc/326052.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/326052.html

技術記事

アルゴリズム原理 P が n 個の要素の完全な配置を表し、Pi が要素 i を含まない n 個の要素の完全な配置を表す場合、 (i) Pi が配置 Pi の前に接頭辞 i を付けた配置を表す場合、完全な配置はn 個の要素のうち ...





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。